【问题标题】:Running .JAR file from java code (netbeans)从 java 代码(netbeans)运行 .JAR 文件
【发布时间】:2018-05-02 15:55:25
【问题描述】:

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

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

到目前为止我想做什么:

JAR 文件项目。

  1. 在 netbeans 中,我检查了主类是否已定义(项目属性 -> 运行 -> 主类)。

其他 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) {
    
        }
    

在某些电脑上它工作正常,但在其他电脑上它不起作用,我收到一条错误消息:“找不到主类” ** 如果我通过双击运行 jar 来运行它的作品。

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

【问题讨论】:

  • 您的命令是否可以从命令行运行? (我怀疑 .exec 可能不是问题)
  • @Stefan - 嗨,我的命令在命令行中运行良好(但根文件夹仍然存在同样的问题)。

标签: java netbeans jar processbuilder


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以尝试将其命名为如下所示。有两种调用方式。

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

    }

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多