java – 为什么我的jar文件没有双击启动?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么我的jar文件没有双击启动?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2497字,纯文字阅读大概需要4分钟。
内容图文
![java – 为什么我的jar文件没有双击启动?](/upload/InfoBanner/zyjiaocheng/773/3d397bc11fc1432ebc072da89d9bcf4b.jpg)
我在双击时启动一个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
这是主要方法:
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文件外部的文本资源,我使用硬代码来获取最终文件(“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("/"));
}
现在在启动时,我将首先在文件系统上找到我的位置,然后根据我当前的位置设置我的程序所需文件的值,现在双击就像一个魅力!简单
内容总结
以上是互联网集市为您收集整理的java – 为什么我的jar文件没有双击启动?全部内容,希望文章能够帮你解决java – 为什么我的jar文件没有双击启动?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。