gpt4 book ai didi

java - 运行 .jar 文件 - 双击与命令行执行

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:06 25 4
gpt4 key购买 nike

我有一个 java 桌面应用程序,其中包含以下代码:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
System.out.println("check1");
int intResult = compiler.run(System.in, System.out, foutErrorFile, strvalidatePath);
System.out.println("check2");

当我通过执行“java -jar name.jar”运行此应用程序相应的.jar 文件时,check1 和 check2 都会被打印,并且应用程序工作正常。但是当我尝试通过双击 .jar 文件来运行 jar 时,我发现 ToolProvider.getSystemJavaCompiler() 返回 null。 “check2”不会被打印。我没有从 compiler.run() 得到正确的结果。

我确实修改了注册表项“\HKEY_CLASSES_ROOT\jarfile\shell\open\command”"C:\Program Files\Java\jre1.6.0\bin\javaw.exe"-jar "%1"%* 到“C:\Program Files\Java\jre1.6.0\bin\java.exe”-jar“%1”%*。这样我就可以在应用程序运行时看到控制台。

那么,当我双击运行 .jar 文件时,为什么我的程序(使用 java -jar 命令运行时运行良好)会出现故障?

最佳答案

我的问题已经解决了。双击时,执行的命令是注册表项中指定的命令。就我而言,注册表项“\HKEY_CLASSES_ROOT\jarfile\shell\open\command”是:

“C:\Program Files\Java\jre7\bin\javaw.exe”-jar“%1”%*

这意味着它使用JRE目录中的javaw.exe应用程序来执行程序。我的 JRE 目录的 lib 文件夹中缺少一个名为 Tools.jar 的 .jar 文件。这对于在程序执行期间获取编译器至关重要。

我将缺少的 jar 文件从 JDK 目录 lib 文件夹复制到 JRE 目录中的相同位置。这解决了我的问题。感谢大家的帮助。

关于java - 运行 .jar 文件 - 双击与命令行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25076766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com