【发布时间】:2014-09-24 10:51:54
【问题描述】:
我有一个包含以下代码的 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 命令运行时运行良好)出现故障?
【问题讨论】:
-
您使用的是哪个操作系统?
-
this的可能重复
-
我不认为是这样,因为我实际上能够启动程序,并且通过双击包括它的 GUI,其他一切似乎都可以正常工作。除了调用编译器函数的这部分。
标签: java command-line jar execute double-click