【问题标题】:e: java.io.IOException: Cannot run program "java -jar bg.jar": CreateProcess error=2, The system cannot find the filee: java.io.IOException: Cannot run program "java -jar bg.jar": CreateProcess error=2, 系统找不到文件
【发布时间】:2015-10-25 05:55:14
【问题描述】:

我有一个名为 bg.jar 的 jar 文件,它会打印一些数字。我想从 java 程序中调用这个 bg.jar。我用了这个代码

public class bg1 {
public static void main(String[] args) {
    try{
     //  Process ps = Runtime.getRuntime().exec("java -jar bg.jar");
      ProcessBuilder builder = new ProcessBuilder("java -jar bg.jar");
      Process process = builder.start();

    }catch(Exception e){
        System.out.println("e: "+ e.toString());
    }
  }
}

我在 bg1 项目的库文件夹中添加了 bg.jar。但是当我运行 bg1.class 它给了我这个错误:

e: java.io.IOException: Cannot run program "java -jar bg.jar": CreateProcess error=2, 系统找不到指定的文件

如何从 bg1.class 调用 bg.jar

【问题讨论】:

  • 您可以尝试将 bg.jar 移动到 src 文件夹吗?
  • @Rakesh 我试过了.. 给了我同样的错误
  • 你能打印完整的堆栈跟踪吗 - e.printStackTrace() 而不是 e.toString()
  • @Rakesh 不,它不可扔,所以它不允许我打印 e.printStackTrace()
  • 删除 SOP 行并仅替换为 e.printStackTrace();

标签: java jar netbeans-7


【解决方案1】:

我认为文件未找到错误是系统找不到“java”可执行文件。一种方法是将“java”目录路径添加到环境变量 PATH。要查找变量,请右键单击“我的电脑”/高级系统设置/环境变量/系统变量。然后打开一个新的控制台,运行上面的 Java 程序。

另一种方法可能是将 jar 文件加载到您的 Java 程序中。然后在您的 Java 代码中运行静态 main 方法。要动态加载 java 文件,请参阅How to load a jar file at runtime。可以通过解析jar文件中的META-INF/MANIFEST.MF文件找到包含main方法的类。

【讨论】:

  • 我将我的 java 目录路径添加到环境变量中的 PATH 变量中。我仍然遇到同样的错误
  • 试试这个:ProcessBuilder builder = new ProcessBuilder("java", "-jar", "bg.jar");
【解决方案2】:

ProcessBuilder builder = new ProcessBuilder("java -jar bg.jar");

空格在进程构建器命令中不起作用,我尝试使用逗号分隔的单词,它起作用了。

类似这样的命令“make macosx”-

ProcessBuilder builder = new ProcessBuilder("make" , "macosx");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2021-07-26
    • 2018-09-17
    相关资源
    最近更新 更多