我有一个启动器,我正在创建一个迷你侧项目,我正在尝试执行一个jar文件。我想出了如何执行exe。下面是代码:
mineshaft.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String mhome = System.getProperty("user.home") + "";
try {
Runtime.getRuntime().exec("java -jar .mhome+ \\AppData\\Roaming\\.minecraft\\minecraft.exe");
}
catch (Exception a) {
}
}
});
我到处搜索,每个人都说这段代码有效,但对我来说不行。有什么建议吗?
答案 0 :(得分:1)
首先,你的命令是错误的。 .mhome+
?
确保您的命令正确无误。从命令提示符输入以下内容:
java -jar .mhome\AppData\Roaming\.minecraft\minecraft.exe
这基本上就是你正在运行的东西。
另外,打印你的STACKTRACE。特别是在开发过程中。
我认为你正在寻找这样的东西:
public void actionPerformed(ActionEvent e) {
String mhome = System.getProperty("user.home") + "";
try {
Runtime.getRuntime().exec("java -jar " + mhome + "\\AppData\\Roaming\\.minecraft\\minecraft.jar");
}
catch (Exception a) {
a.printStrackTrace();
}
}
答案 1 :(得分:0)
JarInputStream stream = null;
try {
File jar = new File("/path/to/jar.jar");
stream = new JarInputStream(new FileInputStream(jar));
String mainClass = stream.getManifest().getMainAttributes().getValue("Main-class");
ClassLoader loader = URLClassLoader.newInstance(new URL[] { jar.toURI().toURL() }, getClass().getClassLoader);
Class<?> main = Class.forName(mainClass, loader);
main.getDeclaredMethod("main", String[].class).invoke(null, null);
} finally {
stream.close();
}
km1的答案更简单,如果它符合您的需求。