ger*_*rky 5 java compiler-construction
我编写了一些代码来编译Java源代码.然后它生成.class文件.问题是我该如何运行它?
例如,我对正在设置的程序和类的名称没问题,我使用了prog p = new prog(),但是,在这种情况下,类文件在编译之前还不存在.不太确定该怎么做.有人可以给我一个建议吗?
顺便说一句,这个类看起来像这样:
public void compile{
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int compilationResult = compiler.run(null, null, null, fileToCompile);
}
public void run(){
Prog prog = new Prog();
prog.run();
}
Run Code Online (Sandbox Code Playgroud)
如果您只想运行它,可以使用Runtime.exec或ProcessBuilder启动Java进程 .这些将创建一个单独的java进程来运行您的java程序.这更有可能是你想要的.你基本上可以做的是:
>java someClass
Run Code Online (Sandbox Code Playgroud)
从您的申请中.此链接可能有所帮助.
如果你想实际加载类文件并在你当前的应用程序中使用它,我认为有点像这样,或动态加载Java类应该有所帮助.基本上(直接来自链接,稍加修改):
public class MainClass {
public static void main(String[] args){
ClassLoader classLoader = MainClass.class.getClassLoader();
try {
Class aClass = classLoader.loadClass("MyClass");
System.out.println("aClass.getName() = " + aClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
加载类后,您有一个Class对象,您可以创建一个aClass由调用表示的类的实例,aClass.newInstance()就像这样
MyClass newObj = new MyClass()
或者您可以使用Class对象公开的任何其他方法.
正如davmac所指出的,上面的代码示例假定您正在加载的代码位于应用程序类路径中.如果要运行的类文件不在类路径中,则可能需要查看URLClassLoader
| 归档时间: |
|
| 查看次数: |
9602 次 |
| 最近记录: |