我已经完成了搜索,我可以看到很多人遇到了和我一样的问题,但没有一个解决方案对我有用。
基本上我在Eclipse中有一个来自旧Windows安装的Java项目。我已经清理并重建了它,因为起初它不会编译,但现在我将它导出为Runnable Jar。但是,我可以让应用程序出现的唯一方法是在命令提示符下执行java -jar foo.jar
,或者在Eclipse中运行它。如果我在Windows资源管理器中双击JAR,即使我知道Java正确关联也没有任何反应,因为其他Runnable Jars可以工作。
项目只在其构建路径库中列出了x86 JRE,并且列出的所有文件似乎都存在。我正在运行Windows 7 HP。
更新:对不起,我刚刚发现没有其他Runnable Jars正在运行。如果它们被launch4j包裹起来,那么它们可以工作......
编辑:我从Eclipse导出的Runnable Jars在其他系统上运行正常,并在双击时加载
答案 0 :(得分:7)
某些注册表值或文件关联可能搞砸了。擦除所有现有的JRE和JDK并重新安装它们可以解决您的问题。
或者您可以通过在此处手动编辑注册表值来修复它:
HKLM > SOFTWARE > Classes > jarfile > shell > open > command
我的价值是
输入:REG_SZ
数据:"C:\Program Files\Java\jre8\bin\javaw.exe" -jar "%1" %*
您当然希望该路径指向您的javaw.exe,并确保您有其他参数。
答案 1 :(得分:1)
当我使用Spring工具套件时,我也遇到了同样的问题。
您可以使用以下步骤: -
- 在我的情况下,我的runnable jar只在我的环境上执行,即我已经创建了那个JAR。最初我选择了第一个创建JAR的选项,即将所需的库提取到所需的JAR中。但这不合适。
它可能对你有帮助。如果我出错了,请让我纠正。
答案 2 :(得分:1)
由于您可以运行运行命令行的JAR,因此我认为您的问题与双击时设置的运行文件的Java版本有关。
要查找从命令行成功运行该文件的版本,并将其设置为默认打开JAR文件:
echo %path%
。在路径值中,您应该能够找到一个指向其中一个已安装Java版本的bin文件夹的路径值。在某处复制此路径。您现在应该能够运行JAR文件了。如果问题仍然存在,请告诉我。
答案 3 :(得分:-1)
我已经制作了一个罐子并将其保存在桌面上。然后,我双击罐子,它对我来说很好。
我和我所拥有的内容:在我的主课堂中,执行一些操作,最后我添加Thread.sleep(25000);
来保持程序片刻。每次双击导出的jar后,我在系统进程树中添加了一个新的 javaw.exe进程。我在任务管理器上注意到了它。各个javaw.exe进程结束后25000ms。因为我的应用程序没有结合任何GUI,这就是为什么我没有看到相应进程的任何GUI更改。我很自信,如果我的应用程序有一些GUI,我肯定会在每次运行时获得相应的GUI窗口。
常见错误:当我们将项目从Eclipse导出为Runnable JAR文件时,它将使用选定的Eclipse启动配置和Eclipse特定的启动包装器导出。现在,如果配置不匹配,当您尝试通过双击运行它时,您将无法看到错误,如果您从CMD运行它,那么您肯定会得到错误日志。
要创建标准可执行JAR文件:要创建标准可执行JAR文件,您可以导出为 JAR文件并指定主类在向导的最后一个屏幕中。
这对我很好。我使用了来自不同系统的相同jar并保持不同的位置。
答案 4 :(得分:-1)
这里真的很傻。
您是否曾尝试使用(java.exe或javaw.exe)提升打开.jar的权限?
右键点击该程序 - >属性 - >兼容性标签 - >检查底部的“以管理员身份运行此程序”按钮。
您可能在命令窗口中拥有提升权限,这可能会让它运行。