好的,我正在尝试在我的jar中执行一个类
我如何让它在jar中运行类?如果那是可能的。
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try {
Runtime.getRuntime().exec("java -Dfile.encoding=Cp1252 -classpath MiddleEarth728/src/bin;MiddleEarth728/src/lib/libs.jar;MiddleEarth728/src/lib/graphics.jar; MiddleEarth728.src.Loader");
dispose();
} catch (Exception err) {
err.printStackTrace();
}
}
});
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try {
Runtime.getRuntime().exec("Java -Xmx500m client 0 0 highmem members 0");
dispose();
} catch (Exception err) {
err.printStackTrace();
}
}
});
答案 0 :(得分:0)
为什么不在你的类路径中包含jar并只调用类?
无论如何,如果你真的需要在运行时加载jar,你必须使用类加载器:
URL[] urls = { new URL("jar:file:" + path + "!/") };
cl = URLClassLoader.newInstance(urls);
cl.loadClass(className);
答案 1 :(得分:0)
您不想运行一个类',您想要执行该类的主要方法。你可以使用反射来做到这一点。
URL[] urls = { new URL("jar:file:" + path + "!/") };
cl = URLClassLoader.newInstance(urls);
Class clazz = cl.loadClass(className);
Method mainMethod = clazz.getDeclaredMethod("main", String[].class);
mainMethod.invoke(null, new String[]{}); //can add args here if needed
产生不同JVM的唯一好处就是安全性。