Re: Launch a new java app from a java program
"Andrew Thompson" <u32984@uwe> writes:
Really? exec seems a heavy handed way to start
a new Java app. running. Generally I would import
the Java class and instantiate it normally, or call its
main with args if needed.
If the class is not known until runtime, then perhaps
reflection can do the trick..
<sscce>
class A {
String[] args = {
"a","b","c"
};
A() throws Exception {
Class bClass = this.getClass().forName("B");
B b = (B)bClass.newInstance();
b.main(args);
}
public static void main(String[] args)
throws Exception {
A a = new A();
}
}
class B {
public static void main(String[] args) {
System.out.println("args: ");
for (int ii=0; ii< args.length; ii++) {
System.out.println(args[ii]);
}
}
}
</sscce>
.though I am not yet convinced that either exec
or reflection is needed for this task.
Tell us - why can you not simply import class B
into your code?
First let me introduce the program we are doing now. We are writing a
java tool to detect the runtime features of another java program. In
order to do this, we write a JVM TI agent to monitor some events in
JVM.
We want to invoke user's java program, with some special VM parameters,
such as -agentpath, in a new instance of VM by our java tool. That is
the reason why I do not simply import user's class in our tool, and
invoke the "main" method.
What we want is, in our java tool, we could invoke user's java program
on a new VM instance, with some special parameters to this VM.
Best Regards
--
Yao Qi <qiyaoltc@gmail.com> GNU/Linux Developer
http://duewayqi.googlepages.com/
Thank goodness modern convenience is a thing of the remote future.
-- Pogo, by Walt Kelly