2016-02-05 71 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運行時,請如果你認爲這可以幫助我解釋爲什麼?我的問題是清楚的「爲什麼」 –

相關問題