'找不到应用程序'通过上下文菜单启动JAR文件时

时间:2015-03-27 13:43:07

标签: java jar path registry system-variable

我试图通过右键单击文件夹并在上下文菜单中选择一个项目来运行.jar文件。当(Default)中的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"

如果我将这些行输入到命令提示符中,那么这些行中的任何一行都可以正常工作,因此我认为问题与注册表有某种关系并没有"看到" classpath 路径。

以下是我的系统变量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

3 个答案:

答案 0 :(得分: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文件的路径。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这里没有CLASSPATH问题。问题是找不到java.exe。这是一个 PATH 问题。