java - 无法访问/运行项目中放置的可执行 jar

标签 java jar executable-jar

我正在尝试运行项目的 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/

相关文章:

java - Netbeans 中 Maven 构建命令的链接

java - CrudRepository 上的 NullPointerException

java - 在正在运行的 Java 应用程序中运行 jar 存档

java - 错误: Could not find or load main class on Mac OSX

java - 如何保持cmd打开?

java - JUnit 测试公共(public)方法对非公共(public)字段的影响

java - ArrayList 添加空指针

java - 如何将 JAR 文件捆绑到 Mac 应用程序包中

java - 我无法从 jar 中读取数据

bundle - 在光盘中分发 Java jar 应用程序