从另一个jar执行jar文件

时间:2017-07-17 06:16:47

标签: java executable-jar

我正在从另一个jar文件执行一个jar文件。从子jar访问资源文件时,它给出了异常: java.io.FileNotFoundException:文件'文件:PATH_TO_CHILD_JAR / example-1.0.0-0-SNAPSHOT-jar-with-dependencies.jar!resource_file_path / abs.sql.tpl'不存在。

我无法弄清楚它为何会“!”搜索资源文件时标记。

2 个答案:

答案 0 :(得分:0)

试试这个

 // Run a java app in a separate system process
 Process proc = Runtime.getRuntime().exec("java -jar A.jar");
 // Then retreive the process output
 InputStream in = proc.getInputStream();
 InputStream err = proc.getErrorStream();

答案 1 :(得分:0)

你可以在java程序中执行jar文件。

  

确保您已在具有Main-Class属性的jar中添加了Manifest文件。

我的步骤和输出:

使用以下行创建清单文件:Main-Class:com.demo.TestJar

创建测试Java程序:

package com.demo;
  public class TestJar extends Object {
  public static void main(String args[]) {
    System.out.println("TestJar");
  }
}

打包jar:jar cvfm /home/user/TestJarOne.jar manifest.txt

编写测试程序:

import java.io.BufferedInputStream;
import java.io.IOException;

public class TestJSS extends Object {

static int i = 0;

public static void main(String args[]) throws IOException, InterruptedException {
    System.out.println("Calling jar");
    Process p = Runtime.getRuntime().exec("java -jar /home/user/TestJarOne.jar arg1 arg2");
    BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
    synchronized (p) {
        p.waitFor();
    }
    System.out.println(p.exitValue());
    int b=0;
    while((b=bis.read()) >0){

        System.out.print((char)b);    
    }        
    System.out.println("");
    System.out.println("Called jar");
  }

}