从java代码(netbeans)

时间:2017-11-19 08:19:50

标签: java netbeans jar processbuilder

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

  1. 位于不同文件夹中的jar文件(例如 - “文件夹”)。
  2. 使用文件和文件夹的jar文件位于根文件夹中(我上面提到的“文件夹”相同)。
  3. 我到目前为止尝试做什么:

    JAR文件项目。

    1. 在netbeans中,我检查了主类是否为defiend(项目属性 - >运行 - >主类)。
    2. 其他JAVA计划

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

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

        &安培;&安培;

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

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

      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) {
        
            }
        
      3. 在某些PC的中工作正常,但在其他电脑中它不起作用,我收到一条错误消息:“无法找到主类” **如果我通过双击它的工作来运行jar,那就是当然。

        那么如何从其他java程序运行jar文件?

2 个答案:

答案 0 :(得分:1)

使用。this变体.exec指定工作文件夹作为第三个参数。 (在您的示例中,您始终只使用一个参数。)

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

答案 1 :(得分:0)

您可以尝试将其称为下面的内容。有两种类型的叫它。

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));

}

}