我使用的是 Windows 7,java 1.6.0_22 是我的默认 java 版本。
我使用一个 jar 文件,它是一个开源 jar 文件 (webscarab-selfcontained-20070504-1631.jar) 来充当中间代理。
通过双击 jar 来执行 jar 文件以及通过 java -jar webscarab-selfcontained-20070504-1631.jar 命令在命令提示符下执行 jar 时,我得到不同的行为。
当我通过设置 jar 的默认代理来访问 URL 时,双击执行 jar 时能够得到正确的响应,而在使用命令提示符执行 jar 文件时得到无效响应。
请让我知道通过双击执行 jar 文件和从命令提示符执行 jar 文件有什么区别...
最佳答案
经过更多研究后我找到了解决方案。
区别在于,双击 jar 文件时,它会选择在注册表中更新的类路径,在我的例子中,java 7 bin 路径在注册表中更新,这使得 jar 在 java7 中执行。
从命令提示符执行 jar 文件时,我将选择我们在环境变量中更新的 java 版本(默认版本),这使得 jar 在 java6 中执行。 这就是为什么我得到了通过双击和命令提示符执行的两种行为。
如何更新注册表:(windows系统)
- Crtl + R -> 打开运行命令
- 输入注册表
- 导航至 HKEY_CLASSES_ROOT\jarfile\shell\open\command
- 根据需要更新路径,例如:"C:\Program Files\Java\jre6\bin\javaw.exe"-jar "%1"%*
现在双击 jar 文件将在 java6 中运行并获得相同的行为......
关于java - 从命令提示符执行 jar 文件和双击 jar 文件时的行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588190/