我已经成功地测试了该场景,并且可以在Java程序中执行jar文件(无需设置类路径)。
您可以确保已在具有Main-Class属性的jar中添加了Manifest文件 。
我的步骤和输出:
- 创建的Mainfest文件包含以下行: Main-Class:com.test.TestJSSJar
- 创建的测试Java程序:
package com.test;
public class TestJSSJar extends Object { public static void main(String args[]) { System.out.println("Hi! I'm in the jar"); System.out.println("Arg:" + args[0]); }}3.打包jar(移至temp文件夹): jar cvfm jss.jar manifest.txt com
4.编写测试程序:
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 /temp/jss.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"); }}5,输出
Calling jar0Hi! I'm in the jarArg:arg1Called jar



