1

我试图通过右键单击文件夹并在上下文菜单中选择一个项目来运行 .jar 文件。当(Default)in的HKEY_CLASSES_ROOT\Directory\shell\MyJar\command值为:

"C:\Program Files (x86)\Java\jdk1.8.0_40\bin\java.exe" -jar "D:\path\to\MyJar.jar"

但是使用以下值,我会弹出一个“找不到应用程序”的弹出窗口:

java -jar "D:\path\to\MyJar.jar"

如果我将它们输入到命令提示符中,这些行中的任何一个都可以正常工作,所以我认为问题与注册表有关,以某种方式没有“看到”路径路径。

下面分别是我的系统变量JAVA_HOME和我的系统变量的开头Path

C:\Program Files (x86)\Java\jdk1.8.0_40
%JAVA_HOME%\bin;C:\ProgramData\Oracle\Java\javapath;

我在 Windows 8.1 和 java 版本 1.8.0_40 上。

编辑:澄清措辞。回复刘国良:

1. 是的。

2. java -version产量:

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)  
Java HotSpot(TM) Client VM (build 25.40-b25, mixed mode, sharing)

3. echo %PATH%开头

C:\Program Files (x86)\Java\jdk1.8.0_40\bin;C:\ProgramData\Oracle\Java\javapath;

echo %JAVA_HOME%产量:

C:\Program Files (x86)\Java\jdk1.8.0_40
4

3 回答 3

1

问题是当您在注册表编辑器中创建一个键时,该键始终创建为REG_SZ未解析环境变量的值。因此,您需要将密钥创建为REG_EXPAND_SZ. 为其解析环境变量。这是您在注册表编辑器中无法做到的。

为了实现你想做的事情,你需要

  • 创建系统环境变量JAVA_HOME
  • 创建一个myjar.reg包含以下内容的注册表文件

十六进制值为"%JAVA_HOME%\bin\java.exe" -jar "D:\path\to\MyJar.jar"

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\MyJar\command]
@=hex(2):22,00,25,00,4a,00,41,00,56,00,41,00,5f,00,48,00,4f,00,4d,00,45,00,\
  25,00,5c,00,62,00,69,00,6e,00,5c,00,6a,00,61,00,76,00,61,00,2e,00,65,00,78,\
  00,65,00,22,00,20,00,2d,00,6a,00,61,00,72,00,20,00,22,00,44,00,3a,00,5c,00,\
  70,00,61,00,74,00,68,00,5c,00,74,00,6f,00,5c,00,4d,00,79,00,4a,00,61,00,72,\
  00,2e,00,6a,00,61,00,72,00,22,00,00,00

将其导入myjar.reg注册表(在注册表编辑器文件 -> 导入中)。然后在编辑器中修改 Jar 文件的路径。

于 2015-03-30T07:23:00.270 回答
0

检查以下内容可能会有所帮助。

  1. 设置环境变量后,你重启了cmd了吗?
  2. 是否有多个 JDK 或 JRE?检查java -versioncommond 以查看您是否已成功设置它。
  3. 另请参阅echo %PATH%%JAVA_HOME%确认您的设置。

希望能帮助到你。

于 2015-03-27T14:58:53.273 回答
0

这里没有 CLASSPATH 问题。问题java.exe没有被发现。这是一个路径问题。

于 2015-03-27T16:32:00.843 回答