【问题标题】:JVM Launcher cannot find main classJVM Launcher 找不到主类
【发布时间】:2012-03-25 12:30:21
【问题描述】:

我正在使用 NetBeans 构建我的可执行 JAR,并且没有弄乱任何 Ant 或项目设置(使用默认值)。

当我转到 Run >> Clean and Build Project 时,我看到 NetBeans 正在构建我的 JAR 并将其顺利放入我项目的 dist/ 目录中。

当我双击该 JAR 运行它时,我收到以下错误消息:

找不到主类:com.me.myorg.MainApp。程序将退出。

如果我在 WinRAR 中打开 JAR 并提取 META-INF/MANIFEST.MF 文件,我看到定义了以下属性:

主类:com.me.myorg.MainApp

显然,com.me.myorg.MainApp 是我的 GUI (Swing) 应用程序的“头”。

关于发生了什么的任何想法?如何排除故障?提前致谢。

【问题讨论】:

  • 它是否有正确的 main 方法,是从 jar 根到 MainApp 类文件/com/me/myorg 的路径吗? (先排除明显的)
  • 您是否确定 com.me.myorg.MainApp 类在您的 jar 中并且在正确的位置?
  • 是的,它有一个 main 方法,并且这个 JAR 几周前运行良好(我可以通过双击它来执行它)并且源代码没有改变。
  • Thorn - 是的 - 请在下面查看我对 Caner 建议的跟进。我认为这表明存在 Windows 安全问题,但我仍然不知道发生了什么。

标签: java netbeans jar classpath


【解决方案1】:

在命令提示符下尝试(Windows):

ftype jarfile="C:\PATH_TO\javaw.exe" -jar "%1" %

编辑
像这样运行命令提示符:转到“开始”并在“搜索”框中键入 CMD。右键单击命令提示符图标并选择以管理员身份运行
http://www.howtogeek.com/howto/windows-vista/run-a-command-as-administrator-from-the-windows-vista-run-box/

然后运行上面的命令。

【讨论】:

  • 我的系统上安装了多个 Java 版本。双击可执行 JAR 时如何判断正在使用哪个?
  • 好吧,我不确定我是否使用了正确版本的 Java,但我在命令提示符下使用了java -version,发现我使用的是 Java 6u25,然后执行了上面的那个命令使用 6u25 的 javaw.exe 文件的绝对文件路径,我收到以下错误消息:访问被拒绝。处理时出错:jarfile。
  • 在控制面板中,有一个“Java 控制面板”的快捷方式。转到名为“Java”的选项卡
  • 感谢 Caner,但是当我转到该选项卡时,它只会显示一个包含我已安装的所有 Java 版本的表格。我相信我使用的是 1.6u25,这是我通过在命令行上运行 java -version 得到的。
  • 感谢 Caner - 这是以管理员身份运行时的输出:jarfile="C:\Program Files\Java\jdk1.6.0_25\bin\javaw.exe" -jar "%1" %
【解决方案2】:

主类声明后是否有新行?

Main-Class: com.me.myorg.MainApp
# empty line here

清单文件格式要求每行以行分隔符结尾。如果主类所在的行是文件中的最后一行,则忽略它。

【讨论】:

  • 其实Main-Class下面有两个空行。这对你来说意味着什么?
  • 并非如此。使用 java -jar yourfile.jar 从 cmd.exe 运行程序会给出不同的消息吗?并且java -cp yourfile.jar com.me.myorg.MainApp能正常启动吗?
猜你喜欢
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
相关资源
最近更新 更多