在我的主程序中,我允许用户创建 Java 类并将它们存储在 UserInputs
包内的 .java
文件中。我现在正在寻找一种方法来在我的主程序中实例化用户创建的类,并在类中运行公共(public)方法。
这是当用户按下 JButton
完成创建类时执行的代码。
public void actionPerformed(ActionEvent e) {
if(e.getSource() == inputButt.getButtons()){
try{
PrintWriter writer = new PrintWriter("C:/Users/human/Desktop/UserInputTest/src/UserInputs/UserCreatedClass.java", "UTF-8");
writer.println(textArea.getText());
writer.close();
}catch(Exception except){
except.printStackTrace();
}
}
}
最佳答案
您需要在运行时编译该文件。也许this或this在这里发帖对您有帮助。
第一个链接说的是您应该使用 Java 6 Compiler API。您需要做的是:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int compilationResult = compiler.run(null, null, null, fileToCompile);
其中 fileToCompile
是文件的路径,在您的情况下为“C:/Users/human/Desktop/UserInputTest/src/UserInputs/UserCreatedClass.java”。然后就可以通过Reflection来执行代码了。
不过,我会非常谨慎地让人们创建和执行他们自己的 Java 代码。我不知道您打算做什么,但如果您在服务器上运行此代码,我不建议您这样做。如果该应用程序应在客户端计算机上本地运行(因此它们只能伤害自己),这应该不是问题。否则我不会让他们编程他们想要的东西。
关于java - 运行用户创建的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961208/