2012-02-18 152 views
1

在Windows 7中,當我雙擊我的.jar文件時,應用程序部分運行,然後掛起。當在命令行上使用java -jar MyFile.jarjavaw -jar MyFile.jar運行時,它運行得很好。當使用GUI運行它時,它在linux mint上也能正常運行。有什麼辦法可以調試嗎? (優選使用eclipse)當不從命令行運行時,Java應用程序掛起

編輯:

確定。我可能會縮小範圍。當我寫一個簡單的測試程序:

import javax.swing.JOptionPane; 


public class MyDebug { 
    private static void err(String message){ 
     JOptionPane.showMessageDialog(null,message); 
    } 
    public static void main(String[] args){ 
     err("test"); 
    } 

程序運行使用javaw進程的命令行,但是當試圖從桌面Java執行通知我,它「找不到主類:MyDebug。程序將會退出。」

編輯:

我可能會進一步縮小,現在它下來;從桌面啓動時,將使用32位版本的javaw,並且在從命令行啓動時使用64位版本。

求解 我解決了問題,轉到控制面板中的程序和功能,卸載java並重新安裝它。不能回答我自己的帖子,雖然

+2

不要回來雙擊和命令行運行相同的JRE?你是否看到任何異常? – home 2012-02-18 08:23:31

+0

這是什麼意思「部分運行」?哪部分起作用,哪部分不起作用?你有什麼日誌文件?可能你可以在那裏看到異常。 – AlexR 2012-02-18 08:30:46

+0

@home我不知道不同的執行方式是否使用不同的JRE:s,我該如何檢查? – remuladgryta 2012-02-18 08:37:28

回答

3

在你的Windows環境中,請檢查java命令和javaw命令。當你雙擊jar文件時,javaw命令運行jar文件。我想這可能是因爲你安裝了多個jre。

+0

運行javaw -jar MyFile.jar也可以正常工作... – remuladgryta 2012-02-18 08:41:12

+0

我這種情況下確實檢查哪種JRE在兩種情況下都使用。我認爲,大家可能是對的:可能你的PATH變量配置不正確,並且在你的機器上安裝了幾個JRE,並且在從命令提示符和點擊運行時使用不同的JRE。 – AlexR 2012-02-18 08:44:42

+0

如何在啓動時使用不同的方法檢查我使用的JRE? – remuladgryta 2012-02-18 09:30:31

4

@本尼漢給了我一個好主意(+1)。嘗試從命令提示符處運行javaw -jar MyFile.jar而不是java -jar MyFile.jar。 我相信你的應用程序會掛起來,就像你通過雙擊jar文件運行它時一樣。在這種情況下,可能的原因是在程序中使用STDIN或STDOUT。記住:使用javaw時不存在。

+0

我想盡可能多的東西,並評論使用它們的任何行,儘管 – remuladgryta 2012-02-18 09:10:36

1

嘗試通過腳本啓動..

echo "started from %cd%" 
set scriptroot=%~dp0% 

java -version 
echo %path% 

java -jar %scriptroot%\MyFile.jar 

echo "press any key to continue" 
pause 

然後用java版本,異常等

+0

仍然是相同的行爲您的腳本運行'@ehco off': 「從C:\ Users \ remuladgryta \ Desktop」 Java版本「1.7。 0_02「 Java™SE運行環境(build 1.7.0_02-b13) Java HotSpot™64位服務器VM(內部版本22.0-b10,混合模式) java -jar C:\ Users \ remuladgryta \ Desktop \\ MyFile.jar 「按任意鍵繼續」 按任意鍵繼續。 。 。 – remuladgryta 2012-02-18 08:53:57

+0

(這是爲了調試)。使用'java -jar'刪除回顯java -jar行中的回顯。 – Jayan 2012-02-18 09:04:21

+0

使用你的腳本我沒有得到任何例外,程序運行良好 – remuladgryta 2012-02-18 10:00:18

相關問題