Java 2.jar文件彼此不交互
我最近在Java程序中添加了一个更新程序,所有代码都正常工作。然而,我遇到的问题是,最初的程序没有继续运行第二个.jar文件,甚至没有在NetBeans中运行该文件,而是关闭了 我相信这段代码是不起作用的,但我已经完成了大量的系统。out's,它只是直接运行代码,而没有运行第二个程序:Java 2.jar文件彼此不交互,java,Java,我最近在Java程序中添加了一个更新程序,所有代码都正常工作。然而,我遇到的问题是,最初的程序没有继续运行第二个.jar文件,甚至没有在NetBeans中运行该文件,而是关闭了 我相信这段代码是不起作用的,但我已经完成了大量的系统。out's,它只是直接运行代码,而没有运行第二个程序: private void update() { String[] run = {"java", "-jar", "updater/update.jar"}; try { Runti
private void update() {
String[] run = {"java", "-jar", "updater/update.jar"};
try {
Runtime.getRuntime().exec(run);
} catch (Exception ex) {
ex.printStackTrace();
}
System.exit(0);
}
我的文件夹/文件位于以下路径中:
LibTiles.jar (initial file that runs this code)
updater/update.jar
有人能看到任何错误吗?或者我在其他地方做错了什么吗?我相信java.exe不在您的PATH环境中 此外,尝试用文件启动java.exe或更好的javaw.exe(添加.exe),如下所示:
String[] run = {"java.exe", "-jar", "updater/update.jar"};
如果不需要控制台窗口,请使用:
String[] run = {"javaw.exe", "-jar", "updater/update.jar"};
你问题的措辞令人非常困惑。您提到LibTiles.jar,并在updater/update.jar中发布了一个运行main方法的代码段。update.jar中的代码是否需要LibTiles.jar中的.class文件 我可以想到两个可能的问题,都是由于update.jar中缺少清单造成的。它必须说明主方法是什么,并且它还包含类路径。我建议你读一读 您还应该使用Process编写方法,如下所示:
import java.io.*;
导入java.util.*;
公共类DoProcessBuilder{
公共静态void main(字符串args[])引发IOException{
如果(args.length),我将如何将它从.jar更改为.exe?不,您不会更改jar。
import java.io.*;
import java.util.*;
public class DoProcessBuilder {
public static void main(String args[]) throws IOException {
if (args.length <= 0) {
System.err.println("Need command to run");
System.exit(-1);
}
Process process = new ProcessBuilder(args).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:",
Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}