Hallo,
Ich möchte die Main-Methode eines anderen Programms aufrufen.
Wie kann ich das machen?
Ich habe zum Beispiel zwei Möglichkeiten:
1 Alternative) Mit Paket java.lang.Reflect.*;
import java.lang.reflect.*;
public class InvokeMain
{
public static void main( String args[] ) throws Exception
{
String nargs[ ] = new String[ ] { "-option", "Parameter" };
Method methode = Class.forName( "HashMain" ).getMethod( "main" ,
new Class[ ] {nargs.getClass()}) ;
methode.invoke( null, new Object[]{nargs} );
}
}
class HasMain
{
public static void main( String args[ ] )
{
System.out.println( "Hier bin ich." );
}
}
1.1) Was solll ich als Parameter geben:
String nargs[ ] = new String[ ] { "-option", "Parameter" };.
1.2) Wenn die Klasse in einem anderen Verzeichnis oder Paket ist, was soll ich als Path geben?
2 Alternative) Mit der ClassLoader und die invoke-Methode
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
import com.sun.tools.javac.Main;
public static void main(String [] args)
{
int result = Main.compiler(new String[]{"HashMain.java"});
try
{
URLClassLoader ucl = new URLClassLoader(new URL[]{new File"c:/".toURL()});
Class clazz = ucl.loadClass("HashMain");
Object o = class.newInstance();
Method m = clazz.getMethod("methodename",new Class[0]);
m.invoke(o,new Object[o]);
}
catch ..........
catch............
}
2.1 Das funktioniert für Objektmethoden, aber ich möchte die Main-Methode aufrufen.
Dann geht das nicht mehr.
Gruß
Blaise
Mein Mail: tchatoblaise@yahoo.fr
Ich möchte die Main-Methode eines anderen Programms aufrufen.
Wie kann ich das machen?
Ich habe zum Beispiel zwei Möglichkeiten:
1 Alternative) Mit Paket java.lang.Reflect.*;
import java.lang.reflect.*;
public class InvokeMain
{
public static void main( String args[] ) throws Exception
{
String nargs[ ] = new String[ ] { "-option", "Parameter" };
Method methode = Class.forName( "HashMain" ).getMethod( "main" ,
new Class[ ] {nargs.getClass()}) ;
methode.invoke( null, new Object[]{nargs} );
}
}
class HasMain
{
public static void main( String args[ ] )
{
System.out.println( "Hier bin ich." );
}
}
1.1) Was solll ich als Parameter geben:
String nargs[ ] = new String[ ] { "-option", "Parameter" };.
1.2) Wenn die Klasse in einem anderen Verzeichnis oder Paket ist, was soll ich als Path geben?
2 Alternative) Mit der ClassLoader und die invoke-Methode
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
import com.sun.tools.javac.Main;
public static void main(String [] args)
{
int result = Main.compiler(new String[]{"HashMain.java"});
try
{
URLClassLoader ucl = new URLClassLoader(new URL[]{new File"c:/".toURL()});
Class clazz = ucl.loadClass("HashMain");
Object o = class.newInstance();
Method m = clazz.getMethod("methodename",new Class[0]);
m.invoke(o,new Object[o]);
}
catch ..........
catch............
}
2.1 Das funktioniert für Objektmethoden, aber ich möchte die Main-Methode aufrufen.
Dann geht das nicht mehr.
Gruß
Blaise
Mein Mail: tchatoblaise@yahoo.fr
Zuletzt bearbeitet: