700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 为什么java我点击运行却没有_java – 为什么我的jar文件没有双击启动?

为什么java我点击运行却没有_java – 为什么我的jar文件没有双击启动?

时间:2022-11-14 21:56:37

相关推荐

为什么java我点击运行却没有_java – 为什么我的jar文件没有双击启动?

我在双击时启动一个jar文件时遇到麻烦(并用

java SE打开),jar从命令行启动就好了,我创建的其他罐子从双击启动就好了.

我使用eclipse导出器导出了jar文件,我使用了runnable jar export并在运行配置下选择了正确的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 !

这是MANIFEST

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

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文件外部的文本资源,我使用硬代码来获取最终文件(“lang / en.prop”)等资源;事情是从GUI启动时使用JAVA SE打开,就像从其他目录运行命令到我的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("/"));

}

现在在启动时,我将首先在文件系统上找到我的位置,然后根据我当前的位置设置我的程序所需文件的值,现在双击就像一个魅力!简单

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。