【问题标题】:Java application will run from CMD and Eclipse but not double clickJava 应用程序将从 CMD 和 Eclipse 运行,但不能双击
【发布时间】:2013-08-20 11:19:01
【问题描述】:

我进行了搜索,发现很多人都遇到了和我一样的问题,但没有一个解决方案对我有用。

基本上,我在 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 在其他系统上运行良好,双击即可加载

【问题讨论】:

  • 但是右键,打开方式,java运行环境有效吗?双击时执行的start 命令现在无法处理 jar 文件。我的系统用 winrar 打开它们。
  • @Matten 不,如果我右键单击并使用 JRE 打开(无论如何都是默认设置)没有任何反应
  • 正如@Matten 所说,我已经尝试了那里的所有答案,但没有一个有帮助!
  • 你说“什么都没有发生”。您是否在 Windows 任务管理器中检查了 javajavaw 进程 是否在双击时启动?
  • @jeroen_de_schutter 是的,双击时没有启动新进程。它甚至看起来都没有开始,然后又很快又停止了。

标签: java windows compilation cmd executable-jar


【解决方案1】:

一些注册表值或文件关联可能搞砸了。清除所有现有的 JRE 和 JDK 并重新安装它们应该可以解决您的问题。


或者,您可以通过在此处手动编辑注册表值来修复它: HKLM > SOFTWARE > Classes > jarfile > shell > open > command 我的价值是

输入:REG_SZ

数据:"C:\Program Files\Java\jre8\bin\javaw.exe" -jar "%1" %*

您当然希望该路径指向您的 javaw.exe,并确保您有其他参数。

【讨论】:

  • 确实,没有必要重新安装Windows。它可能是您的 Java 版本之一搞砸了。将它们全部卸载并获得一个新的 JDK(已经包含 JRE)。
  • 答案!最后!卸载(然后重新启动)并重新安装我的 JRE 就可以了。非常感谢
【解决方案2】:

我在使用 Spring 工具套件时也遇到了同样的问题。

您可以使用以下步骤:-

  • 右键项目->导出->可运行jar文件->(这里,在库处理中,有三个选项,你必须选择中间一个,即将需要的库打包到生成的jar中。它也会打包外部依赖) .

-就我而言,我的可运行 jar 仅在我的环境中执行,即我在其上创建了该 JAR。最初我选择了创建 JAR 的第一个选项,即将所需的库提取到所需的 JAR 中。但这不合适。

它可能对你有帮助。如果我弄错了,让我纠正。

【讨论】:

  • 感谢您的回答,但我在编译时尝试了每个选项,但我仍然遇到同样的问题。
【解决方案3】:

由于您能够在命令行运行 JAR,我相信您的问题与设置为在双击文件时运行文件的 Java 版本有关。

从命令行找出哪个版本成功运行文件并设置为默认打开JAR文件:

  1. 打开一个新的命令提示符窗口。
  2. 运行echo %path%。在路径值中,您应该能够找到一个指向已安装 Java 版本之一的 bin 文件夹的路径值。将此路径复制到某处。
  3. 导航到您要运行的 JAR 文件。右键单击 JAR -> 打开方式 -> 选择默认程序... -> 浏览...
  4. 浏览到您在第 2 步中复制的路径。(最简单的方法是将其粘贴到地址栏中)
  5. 双击 javaw.exe。
  6. 点击确定。

您现在应该可以运行 JAR 文件了。如果您的问题仍然存在,请告诉我。

【讨论】:

  • 感谢您的回答。我按照你说的做了,得到了相关的路径值,然后将其复制到文件选择器中并选择了javaw.exe,但仍然没有:(
  • 很抱歉。您遇到问题的只是一个 JAR 文件,还是系统范围内的问题? @安迪
  • 不用担心。不,我现在发现双击(系统范围)不会运行任何可执行的 JAR。
  • Java(TM) Platform SE 二进制文件是否列在 JAR 文件的打开方式菜单中(右键单击 -> 打开方式)?如果是这样,当您选择它时会发生什么? @安迪
  • 确实是这样,但仍然没有任何反应。你的编辑也没有运气。
【解决方案4】:

我已经制作了一个罐子并将其保存在桌面上。然后,我双击罐子,它对我来说很好。

我是如何和我监控的: 在我的主类中,执行一些操作,最后我添加Thread.sleep(25000); 以保持程序片刻。每次双击导出的 jar 后,我发现系统进程树中添加了一个新的 javaw.exe 进程。我在任务管理器上注意到了。并在 25000 毫秒后各自的 javaw.exe 进程结束。由于我的应用程序不包含任何 GUI,这就是为什么我没有看到相应进程的任何 GUI 更改。我有信心,如果我的应用程序有一些 GUI,我肯定会在每次运行时获得相应的 GUI 窗口。

常见错误: 当我们将项目从 Eclipse 导出为 Runnable JAR 文件时,它会与选定的 Eclipse 启动配置和 Eclipse 特定的启动包装器一起导出。现在,如果您尝试通过双击运行它时配置不匹配,您将无法看到错误,如果您从 CMD 运行它,那么您肯定会收到错误日志。

创建标准可执行 JAR 文件: 要创建标准可执行 JAR 文件,您可以导出为 JAR 文件指定主类在向导的最后一个屏幕中。

这对我来说很好。我使用了来自不同系统的同一个 jar 并将其保存在不同的位置。

【讨论】:

  • 感谢您的回答。我知道您正在尝试提供帮助,但我确实知道如何编程和使用 Eclipse。我已经完成了你提到的所有事情,但 JAR 仍然没有在我的系统上打开。另外,请阅读我的问题 - 我已经说过这不仅仅是我创建的 JAR。
猜你喜欢
  • 2011-11-11
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多