【发布时间】:2016-02-05 13:05:46
【问题描述】:
我在双击启动 jar 文件时遇到问题(并使用 java SE 打开),该 jar 从命令行启动正常,我创建的其他 jar 通过双击启动正常。
我使用 eclipse exporter 导出了 jar 文件,我使用了可运行的 jar 导出并在运行配置下选择了正确的 main() 类
当我使用 java -jar myjar.jar 运行 jar 时,它会按预期运行,不会引发异常
我在 linux/windows 下都有同样的问题,我真的不明白这一点,因为我使用相同方式创建的其他 jar 文件运行没有任何问题。
只是为了好玩,我创建了一个
c程序,其中仅包含
int main(void){
system("java -jar myjar.jar");
return 0;
}
当我双击已编译的
c程序时,我的 jar 打开了!
这是清单
Manifest-Version: 1.0
Class-Path: . libs/commons-compress-1.10.jar libs/zip4j_1.3.2.jar libs/xz.jar libs/commons-io-2.4.jar libs/oat2dex.jar
Main-Class: deodex.Tester
这是main 方法:
http://pastebin.com/M8Fhb4qW
package deodex;
import deodex.tools.Logger;
import deodex.ui.LangFrame;
import deodex.ui.Window;
public class Tester {
public static void main(String args[]) {
if (Cfg.isFirstLaunch()) {
Cfg.setCurrentLang(S.ENGLISH);
R.initResources();
@SuppressWarnings("unused")
LangFrame win = new LangFrame();
} else {
Cfg.readCfg();
R.initResources();
S.initTempFolders();
Logger.logToStdIO("[test]" + Cfg.getCurrentLang());
@SuppressWarnings("unused")
Window win = new Window();
}
}
}
提前致谢
更多详情
我尝试在我的代码之前添加一个新的JFrame,双击仅适用于出现的JFrame,然后它挂在那里应该在此之后启动的其他 Windows 没有出现,请告诉我在哪里看...为什么它不起作用?因为看起来我的扩展 JFram 的类需要终端/cmd 才能显示,我还应该注意我正在使用一个名为 R 的类从文本文件中加载字符串,具体取决于语言和 Cfg 类检查程序是第一次启动还是之前启动过,然后加载正确的语言文件和资源。
编辑
正如答案中所建议的那样,我删除了所有我的 JDK 并按照描述安装了 Oracle 的 JDK 仍然有同样的问题
【问题讨论】:
-
解释你是如何创建 .jar 的 .... .jar 有 exec 和 non-exec 两种类型
-
双击时会发生什么/不发生什么?你说的是哪个操作系统? Linux?苹果电脑 ?窗户?雅达利? AmigaOS ?
-
请不要为您的代码使用外部链接。在您的问题中包含代码。
-
@SrinathGanesh 我更新了问题,我用 eclipse export runnable jar 没用,我试过 export jar 文件还是没用
-
@Marged 我正在使用 linux 和 windows 它都失败了,当从 theminal jar 启动按预期运行时,没有抛出异常