Java Jar文件在运行3秒后关闭

Java Jar文件在运行3秒后关闭,java,jar,launcher,Java,Jar,Launcher,所以我创建了一个游戏启动器,它成功地下载并提取了一个Zip文件。但随后它尝试打开zip中的Jar文件,所发生的一切就是游戏弹出约2秒钟,然后关闭。如果我手动双击它,它工作正常,或者如果我通过命令行运行它,它工作正常。。。下面是我尝试使用的两段代码来运行Jar。(请注意,jar在运行时不会返回任何错误): 而且 Process proc = new ProcessBuilder("java.exe", "-jar", appdata+"/gamefiles/Game.jar").start();

所以我创建了一个游戏启动器,它成功地下载并提取了一个Zip文件。但随后它尝试打开zip中的Jar文件,所发生的一切就是游戏弹出约2秒钟,然后关闭。如果我手动双击它,它工作正常,或者如果我通过命令行运行它,它工作正常。。。下面是我尝试使用的两段代码来运行Jar。(请注意,jar在运行时不会返回任何错误):

而且

Process proc = new ProcessBuilder("java.exe", "-jar", appdata+"/gamefiles/Game.jar").start();
int result = proc.waitFor();
System.out.println(result);

非常感谢您的反馈。

由于您使用的是process builder,并且没有指定任何有关环境的内容,您的JAR文件是否有可能因为没有获取环境变量而找不到所需的元素(如JVM位置或类路径)?

输出中有任何错误?您是否在清单中为您试图运行的jar文件指定了一个main?输出没有错误。是的,jar是使用JARPLICE使用所需的库编译的,我为主类使用了正确的路径。您没有读取进程的标准输出,所以如何知道没有错误?我在命令提示符下运行,没有收到错误。我也在eclipse中运行,因此它会告诉我调试过程中是否有错误。在命令提示符下使用“java.exe-jar%appdata%/gamesfiles/Game.jar”可以很好地工作,因此我确实正确地设置了环境变量。我希望环境变量在命令提示符下可以很好地工作。我怀疑它们在ProcessBuilder类中是否工作得“很好”。如果它在java代码
appdata
%appdata%
时工作,那么您可能就没事了。无论哪种方式,都可能存在Java stuff找不到的openGL库,从ProcessBuilder的角度来看,这可能与它们没有得到相同的定义/处理有关如果jar文件在我双击它时运行,那么它会正确地加载依赖项。这就是为什么我感到困惑的原因,如果它可以独立运行,为什么它不能通过java代码运行呢?我可以很容易地想象
PATH
JAVA\u HOME
,以及任何OpenGL JAVA特定的环境变量可能会对JAVA命令产生影响。@EdwinBuck为什么?Java使用的环境应该与os使用的环境相同。当然,您可以使用ProcessBuilder覆盖它们,但我不知道在默认情况下它们会有所不同
Process proc = new ProcessBuilder("java.exe", "-jar", appdata+"/gamefiles/Game.jar").start();
int result = proc.waitFor();
System.out.println(result);