gpt4 book ai didi

java - 为什么我的 jar 文件不能在双击时启动?

转载 作者:搜寻专家 更新时间:2023-11-01 03:34:32 25 4
gpt4 key购买 nike

我在双击启动 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com