运行 来自 java 代码的 .JAR 文件 (netbeans)

Running .JAR file from java code (netbeans)

我正在尝试从 java 代码 运行 一个 jar 文件,但不幸的是没有成功。 关于 jar 文件的一些细节:

  1. 位于不同文件夹中的 jar 文件(例如 - "Folder")。
  2. 使用文件和文件夹的jar文件在根文件夹中(与我上面提到的"Folder"相同)。

到目前为止我正在尝试做什么:

JAR 文件项目。

  1. 在 netbeans 中,我检查了主要 class 是 defiend(项目属性 -> 运行 -> 主要 Class)。

其他JAVA计划

  1. 正在尝试 运行 使用以下命令:

      Runtime.getRuntime().exec("javaw -jar "C:\Software\program.jar");
    

    &&

      Runtime.getRuntime().exec("javaw -jar "C:\Software\program.jar" "C:\Software");
    

    jar 文件打开很好,但他不知道和识别他的内部文件夹和文件(与我上面提到的 "Folder" 相同)。 简而言之,它无法识别其根文件夹。

  2. 尝试 运行 使用 ProcessBuilder

           ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start", "javaw", "-jar", "C:\Software\program.jar");
        pb.directory(new File("C:\Software"));
        try {
            pb.start();
        } catch (IOException ex) {
    
        }
    

在某些 PC 上 它工作正常,但在其他 PC 上它不工作并且我收到一条错误消息:"Could not find the main class" ** Offcourse 如果我 运行 jar 双击它的作品。

那么我如何 运行 来自其他 java 程序的 jar 文件?

使用 .exec 的 this 变体,将工作文件夹指定为第三个参数。 (在你的例子中,你总是只使用一个参数。)

exec("javaw -jar "C:\Software\program.jar", null, "C:\Software");

您可以尝试像下面这样称呼它。有两种调用方式。

public class JarExecutor {

public static void main(String[] args) throws IOException, InterruptedException {

//这是第一种调用方式

Process proc=Runtime.getRuntime().exec(new String[]{"java","-jar" ,"C:\Users\Leno\Desktop\JarsPractise\JarsPrac.jar"});

//这是第二种调用方式

    Process proc=Runtime.getRuntime().exec(new String[]{"java","-cp","C:\Users\Leno\Desktop\JarsPractise\JarsPrac.jar","com.shiva.practise.FloydTriangle"});
    proc.waitFor();
    BufferedInputStream is=new BufferedInputStream(proc.getInputStream());
    byte[] byt=new byte[is.available()];
    is.read(byt,0,byt.length);
    System.out.println(new String(byt));

}

}