Runnable jar 适用于 Mac;在 Windows 上给出主要 class 错误
Runnable jar works on Mac; gives main class error on Windows
我正在 Mac 上使用 Eclipse 生成一个应用程序,并使用文件导出生成一个可运行的 Jar。我在 Mac 和另一个 Mac 上愉快地生成 运行 的 Runnable Jar 文件。但是在两台不同的 Windows 机器上,它们不会。我四处寻找答案,并尝试了以下方法:
1) 当我双击 jar 图标时没有任何反应。
2) 当我输入
java-罐子Luscinia.jar
在命令提示符下,我得到:
"Could not find or load main class 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 目录中。
- 清单包含以下行:
Class-路径:.
主要-Class:lusc.net.github.Luscinia
(& 它在底部包含两个空行)
- 其他 jar 在两台 Windows 机器上运行良好。
- 再次强调,它在两台 Mac 机器上运行良好。
有什么想法吗?
- 我检查了EOL字符是否有效果。将其更改为 Windows \r\n 没有任何效果。 (感谢 RealSkeptic 的想法)。
您确定您的 class 不会尝试加载 windows JRE 中不可用的 Mac 特定 class(供应商私有 classes ? 像 com.sun classes on windows) 或者它没有缺少主要 class 所必需的 class 路径中的依赖项 ?
如果在 class 加载主要 class 时(例如在静态块中),您的依赖 class 之一无法加载,这将导致无法加载导入class 同样,您可能会遇到这个问题。
无论如何,拥有主要 class 的来源可以帮助解决问题。
DarkRift 提供的答案是正确的:
隐藏在一个文件中的是对 com.apple...class 的引用,这是多余的,而且关键是特定于平台。
在这种情况下,当我收到错误消息时:
Could not find or load main class lusc.net.github.Luscinia
这意味着 "Could not load" 而不是 "Could not find"。感谢您的所有建议。
我正在 Mac 上使用 Eclipse 生成一个应用程序,并使用文件导出生成一个可运行的 Jar。我在 Mac 和另一个 Mac 上愉快地生成 运行 的 Runnable Jar 文件。但是在两台不同的 Windows 机器上,它们不会。我四处寻找答案,并尝试了以下方法:
1) 当我双击 jar 图标时没有任何反应。
2) 当我输入
java-罐子Luscinia.jar
在命令提示符下,我得到:
"Could not find or load main class 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 目录中。
- 清单包含以下行:
Class-路径:.
主要-Class:lusc.net.github.Luscinia
(& 它在底部包含两个空行) - 其他 jar 在两台 Windows 机器上运行良好。
- 再次强调,它在两台 Mac 机器上运行良好。
有什么想法吗?
- 我检查了EOL字符是否有效果。将其更改为 Windows \r\n 没有任何效果。 (感谢 RealSkeptic 的想法)。
您确定您的 class 不会尝试加载 windows JRE 中不可用的 Mac 特定 class(供应商私有 classes ? 像 com.sun classes on windows) 或者它没有缺少主要 class 所必需的 class 路径中的依赖项 ?
如果在 class 加载主要 class 时(例如在静态块中),您的依赖 class 之一无法加载,这将导致无法加载导入class 同样,您可能会遇到这个问题。
无论如何,拥有主要 class 的来源可以帮助解决问题。
DarkRift 提供的答案是正确的:
隐藏在一个文件中的是对 com.apple...class 的引用,这是多余的,而且关键是特定于平台。
在这种情况下,当我收到错误消息时:
Could not find or load main class lusc.net.github.Luscinia
这意味着 "Could not load" 而不是 "Could not find"。感谢您的所有建议。