2012-02-18 150 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

相关问题