当不从命令行运行时,Java应用程序挂起
在Windows 7中,当我双击我的.jar文件时,应用程序部分运行,然后挂起。当在命令行上使用java -jar MyFile.jar
或javaw -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并重新安装它。不能回答我自己的帖子,虽然
在你的Windows环境中,请检查java命令和javaw命令。当你双击jar文件时,javaw命令运行jar文件。我想这可能是因为你安装了多个jre。
运行javaw -jar MyFile.jar也可以正常工作... – remuladgryta 2012-02-18 08:41:12
我这种情况下确实检查哪种JRE在两种情况下都使用。我认为,大家可能是对的:可能你的PATH变量配置不正确,并且在你的机器上安装了几个JRE,并且在从命令提示符和点击运行时使用不同的JRE。 – AlexR 2012-02-18 08:44:42
如何在启动时使用不同的方法检查我使用的JRE? – remuladgryta 2012-02-18 09:30:31
@本尼汉给了我一个好主意(+1)。尝试从命令提示符处运行javaw -jar MyFile.jar
而不是java -jar MyFile.jar
。 我相信你的应用程序会挂起来,就像你通过双击jar文件运行它时一样。在这种情况下,可能的原因是在程序中使用STDIN或STDOUT。记住:使用javaw
时不存在。
我想尽可能多的东西,并评论使用它们的任何行,尽管 – remuladgryta 2012-02-18 09:10:36
尝试通过脚本启动..
echo "started from %cd%"
set scriptroot=%~dp0%
java -version
echo %path%
java -jar %scriptroot%\MyFile.jar
echo "press any key to continue"
pause
然后用java版本,异常等
仍然是相同的行为您的脚本运行'@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
(这是为了调试)。使用'java -jar'删除回显java -jar行中的回显。 – Jayan 2012-02-18 09:04:21
使用你的脚本我没有得到任何例外,程序运行良好 – remuladgryta 2012-02-18 10:00:18
不要回来双击和命令行运行相同的JRE?你是否看到任何异常? – home 2012-02-18 08:23:31
这是什么意思“部分运行”?哪部分起作用,哪部分不起作用?你有什么日志文件?可能你可以在那里看到异常。 – AlexR 2012-02-18 08:30:46
@home我不知道不同的执行方式是否使用不同的JRE:s,我该如何检查? – remuladgryta 2012-02-18 08:37:28