java - 从命令提示符执行 jar 文件和双击 jar 文件时的行为差异

标签 java jar

我使用的是 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系统)

  1. Crtl + R -> 打开运行命令
  2. 输入注册表
  3. 导航至 HKEY_CLASSES_ROOT\jarfile\shell\open\command
  4. 根据需要更新路径,例如:"C:\Program Files\Java\jre6\bin\javaw.exe"-jar "%1"%*

现在双击 jar 文件将在 java6 中运行并获得相同的行为......

关于java - 从命令提示符执行 jar 文件和双击 jar 文件时的行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588190/

相关文章:

java - 如何使我的可视化 Java 应用程序将自身复制到自定义目录?

java - 为什么这两个内容相同的 jar 文件的文件大小不同?

java - 选项卡不填充 tablayout

Java,如何让程序等待视频结束然后继续,wait()使程序停止

java - 对文本小部件的 SWT 拖放支持

java - 通过 eclipse 创建一个包含 .exe 文件的可运行 JAR

java - 将jdbc添加到maven项目中

java - 可滚动结果集 (JDBC) 的 createStatement 参数之间的区别

java - 不通过执行 Java 应用程序在 ARM 上加载 JDBC 库

java - 添加后无法在 IntelliJ 中访问 .jar 文件