2014-02-23 59 views
1

我正在開發一個在幾百臺Windows和Linux(使用最新的Oracle JRE)上運行良好的Java應用程序。但是,在一臺Windows 7 64位機器上,該應用程序將無法運行。有趣的事實:如果從命令行通過java -jar MyApp.jar啓動,那麼應用程序「只是失敗」並返回到shell,根本沒有任何消息。Java應用程序停止,沒有任何錯誤消息或異常

爲了找到這個問題我包這樣的內main()全部內容:

public static void main(String [] args) 
{ 
    try 
    { 
     // Init. Swing GUI, run application ... 
    } 
    catch(Throwable t) 
    { 
     t.printStackTrace(); 
     System.exit(1); 
    } 
} 

不幸的是,即使有這樣的try-catch塊我還沒有得到命令行的任何消息。

你能推薦任何其他方式來找出問題出在哪裏嗎?

+1

可能會在JVM的Windows機器上搞砸了。下載另一個,甚至32位,看看會發生什麼。 – Harald

+0

您可以在該機器上運行其他Java應用程序嗎?其他Swing應用程序? – chrylis

回答

0

只是爲了記錄:我們需要安裝JRE的64位版本,現在的應用程序重新工作就像一個魅力:)

0

如果可能,在該機器上啓用調試方法。除此以外。你可以寫一些調試行到jar外部的日誌文件。因此,您將知道JVM是否調用主要方法。 也嘗試檢查該機器上的Java版本,如果你的jar取決於Windows 7 64位機器上的特定jre。

0

您的應用程序運行時可能沒有異常。但是,它並不像預期的那樣渲染。

一個簡單的診斷應該提供一些更多的信息。在命令行中添加一個「-verbose」開關。這將打印在應用程序調用期間加載的所有類。

$> java -verbose -jar MyApp.jar 

應該顯示一些額外的信息。注意!確保你添加了-verbose作爲第一個參數,就像我上面演示的那樣。

希望得到你的開始。

另外,你可以添加一個System.out.println(「SOME MESSAGE」)作爲你的try塊的第一行。這也可能有幫助。

+0

我已經用-verbose標誌試過了。但這並沒有起到什麼作用,它只是告訴我已經裝載了哪些資源,但根本沒有提供任何錯誤。 – Matthias

+0

沒問題。這是我的觀點,它正在運行(沒有錯誤),它只是沒有出現在你期望的屏幕上。您是否檢查過您的應用是否有「流程」運行?確保你是圍繞你的應用程序的主框架。祝你好運:) – lorinpa

+0

錯誤在我的評論:(應該閱讀「看看是否有一個進程運行與您的應用程序相關聯」。此外,嘗試替換一個簡單的框架焦點像:JFrame mainFrame = new JFrame(「main」 ); 的JPanel mainPanel中=新JPanel(); JOptionPane.showMessageDialog(大型機, 「一個簡單的測試。」); mainFrame.add(mainPanel中); mainFrame.setVisible(真); – lorinpa

相關問題