我在双击启动 jar 文件时遇到问题(并使用 java SE 打开),jar 从命令行启动得很好,我创建的其他 jar 可以通过双击启动。
我使用 eclipse exporter 导出了 jar 文件,我使用了可运行的 jar 导出并在运行配置下选择了正确的 main() 类
当我使用 java -jar myjar.jar
运行 jar 时,它按预期运行,没有抛出异常
我在 linux/windows 下都有同样的问题我真的不明白这一点,因为我使用相同方式创建的其他 jar 文件运行没有任何问题。
Just for fun I created a
c
program containing only
int main(void){
system("java -jar myjar.jar");
return 0;
}
When I double clicked the compiled
c
program my jar opened up !
这是 list
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
的类从文本加载字符串根据 Language 和 Cfg
类检查程序是否首次启动或之前启动过,然后加载正确的语言文件和资源。
编辑
正如答案中所建议的那样,我删除了所有 JDK 并按照所述安装了 Oracle 的 JDk 仍然有同样的问题
最佳答案
我在这里解决了我自己的问题是为什么:
正如我在细节中所说,我使用 JAR
文件外部的文本资源,并且我使用硬代码来获取这些资源,例如 final File("lang/en.prop");
问题是从使用 JAVA SE 打开的 GUI
启动时,这就像从其他目录向我的 jar 运行命令,这将失败,因为 Cfg
类将抛出一个 NullPointerException 因为文本资源不存在所以我创建了一个新类,像这样称它为 PathUtils
PathUtils.java
public static String getExcutionPath(){
String path = "";
try {
path =PathUtils.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Somthing went wrong couldn't detemine our current location !");
}
return path.substring(0, path.lastIndexOf("/"));
}
现在在 Launch 上,我将首先找到我在文件系统上的位置,然后根据我当前的位置为我的程序设置所需文件的值,现在双击非常有用!简单
关于java - 为什么我的 jar 文件不能在双击时启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225012/