I have wrote some code to compile a Java source code. It then produces the .class file. The problem is how do I run it?
For example, I am ok with the name of the program and class being set, I’ve used prog p = new prog(), in this case, however, the class file does not yet exist until I compile it. Not really sure what to do. Can someone give me an advice?
btw, the class looks like this:
public void compile{
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int compilationResult = compiler.run(null, null, null, fileToCompile);
}
public void run(){
Prog prog = new Prog();
prog.run();
}
If you just want to run it, you could launch a java process using
Runtime.exec or ProcessBuilder. These will create a seperate java process to run your java program. This is more likely what you want. You can essentially do the equivelant of:
from within your application. This link may help.
If you want to actually load the classfile and use it in your current application, I think something along the lines of this, or dynamically loading Java Classes ought to help. Basically (directly from the link, slightly modified):
Once you loaded the class, you have a Class object, and you can create an instance of the class represented by
aClassby callingaClass.newInstance(), which is likeMyClass newObj = new MyClass()Or you can use any of the other methods the
Classobject exposes.As pointed out by davmac, the code sample above presumes that the code you’re loading is on your applications classpath. If the class files you want to run are not in your classpath, you might want to look into URLClassLoader