2016-02-05 59 views
4

我在双击(用java SE打开)时启动jar文件时出现问题,jar从命令行启动得很好,我创建的其他jar从双击开始很好。为什么我的jar文件不能双击启动?

我使用eclipse出口国出口的jar文件,我用的是可运行的jar出口和运行配置下选择了正确的main()类

当我运行使用java -jar myjar.jar它运行正常无例外的是罐子抛出

我在Linux下/ Windows都有同样的问题我真的不明白这一点,因为我用同样的方式创建的其他jar文件运行没有任何问题。

只是为了好玩,我创建仅包含

int main(void){ 
    system("java -jar myjar.jar"); 
    return 0; 
} 

一个c程序时,我双击了编译c程序我的罐子打开了!

这里是清单

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的类从一个文本文件加载字符串,具体取决于语言和Cfg类,以检查程序是否第一次启动或启动之前,然后加载适当的语言文件和资源。

编辑
在我删除了答案建议我所有的JDK的并安装Oracle的JDK静止描述有同样的问题

+2

解释如何创建.jar ....有两种类型的.jar exec和non-exec –

+2

双击时会发生什么/不会发生什么?你在说什么操作系统? Linux?苹果电脑 ? Windows?雅达利? AmigaOS? – Marged

+2

请勿使用外部链接代码。在你的问题中包含代码。 – VGR

回答

1

我解决我自己的问题,这是为什么: 正如我在我使用文本资源从JAR文件之外的细节说,我用硬编码来获得这些资源,如final File("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("/")); 
    } 

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

0

问题可能住在Java SE运行时环境的不当安装的范围内。可能需要从计算机上卸载所有Java的痕迹,并使用Oracle Technology Network的离线安装程序重新安装Java。

在Linux上,添加PPA ppa:webupd8team/java并安装oracle-java8-installer - 据我所知,它有很多的桌面环境的整合,至少它与Ubuntu团结和XFCE做,所以双击要在那里工作过。

+0

正如我在我的问题中所说的,这绝对不是文件关联问题 –

+0

@ lord-ralf-adolf在你说“它不起作用”之前 - 你有没有试过这个解决方案?这将是非常令人沮丧的寻求解决方案,并可能后来发现,这确实是正确的解决方案 – RAnders00

+0

我已经有OPENJDK8,7和6和Oracle JDK 8我没有看到重新安装的重点,因为一个jar文件成千上万在我的电脑上无法双击或右键点击打开与JAVA 8运行时,请如果你认为这可以帮助我解释为什么?我的问题是清楚的“为什么” –

相关问题