我正在尝试运行项目的 resources
文件夹中的可执行 jar。如果我将 jar 放在文件系统的任何目录中并提供绝对路径,它就可以正常工作。
请看下面的代码:
String jarPath = "C:\\JarFolder\\myJar.jar";
String command = "java -jar";
String space = " ";
String params = "-a abc";
try {
proc = Runtime
.getRuntime()
.exec(command + space + jarPath + space + params);
} catch (IOException e) {
e.printStackTrace();
}
但是当我将 jar 放在 resources
文件夹中,并将相对 jar 路径设置为:
String jarPath = "..\\..\\..\\resources\\myJar.jar";
我收到错误:错误:无法访问 jarfile ..\\..\\..\\resources\\myJar.jar
我已经验证了路径,它是有效的。 我在这里做错了什么吗?这是正确的方法吗?
最佳答案
使用类加载器获取资源的路径。
String jarPath = this.getClass().getClassLoader().getResource("myJar.jar").getPath();
String command = "java -jar";
String space = " ";
String params = "-a abc";
try {
proc = Runtime
.getRuntime()
.exec(command + space + jarPath + space + params);
} catch (IOException e) {
e.printStackTrace();
}
如果这是从主静态方法运行的,则只需将 this.getClass() 替换为 YourClass.class 即可。
关于java - 无法访问/运行项目中放置的可执行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105462/