【发布时间】:2015-05-30 22:35:44
【问题描述】:
我在 Mac 上使用 Eclipse 制作应用程序,并使用 File Export 来制作 Runnable Jar。我生成的 Runnable Jar 文件在我的 Mac 和另一台 Mac 上运行良好。但是在两台不同的 Windows 机器上,它们不会。我四处寻找答案,并尝试了以下方法:
1) 当我双击 jar 图标时,什么也没有发生。
2) 当我输入
java -jar Luscinia.jar
在命令提示符下,我得到:
“找不到或无法加载主类 lusc.net.github.Luscinia”
3) 当我输入
java -cp Luscinia.jar lusc.net.github.Luscinia
我收到相同的错误消息。
- 一台 Windows 机器上的 JRE(至少)是最新的 (1.8.0_40)。 Mac 上的 JRE 也是如此。
- 我的jar里面的文件结构确实有 Luscinia.class 嵌套在 github、net 和 lusc 目录中。
- 清单包含以下行:
类路径:.
主类:lusc.net.github.Luscania
(&它在底部包含两个空行) - 其他 jar 在两台 Windows 机器上运行良好。
- 再次强调,它在两台 Mac 机器上运行良好。
有什么想法吗?
- 我检查了 EOL 字符是否有效果。将其更改为 Windows \r\n 没有任何效果。 (感谢 RealSkeptic 的创意)。
【问题讨论】:
-
确保清单文件的每一行末尾都有 CR 和 LF。在 Mac 上,它可能只是 CR 或只是 LF。
-
感谢您的想法,但运气不佳。我将 Eclipse 中的选项更改为 Windows EOL (CR LF),清理并重建。我使用 od -c MANIFEST.MF 检查了清单,所有行都以 /r/n 结尾。但我仍然遇到同样的错误。
-
此外,该错误表明 Windows JVM 已经解析了清单(它知道它必须查找 lusc.net.github.Luscinia),但它不能找不到/加载它...
-
我不能确定它是在寻找
Luscinia还是Luscinia,并在其末尾有几个换行符(以及从 Windows 复制到 StackOverflow 时的外观)。但无论如何,当你消除它时,这就解决了。您是否尝试创建一个常规 jar(不可运行)以查看是否成功? -
我会从你的清单中删除
Class-Path: .看看它是否有影响。