我在双击 JAR 文件并用 Java SE 打开时遇到了问题,但是在命令行中可以正常启动,我创建的其他 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
有效,然后它就挂在那里,其他应该在此之后启动的窗口都没有显示出来,请告诉我该去哪里查找......为什么不起作用?因为看起来我的类需要终端/cmd才能显示出来,这些类扩展了JFram
,我还应该注意到,我正在使用一个名为R
的类来根据语言从文本文件中加载字符串,并使用Cfg
类来检查程序是否首次启动或已经启动,然后加载适当的语言文件和资源。
编辑
如答案所建议的,我删除了所有的JDK并按照描述安装了Oracle的JDK,但仍然存在同样的问题。