我正在开发一个Java应用程序,可以在几百台机器上运行,包括Windows和Linux(使用最新的Oracle JRE)。但是,在一台Windows 7 64位计算机上,应用程序将无法运行。
有趣的事实:如果从命令行通过java -jar MyApp.jar
启动,则应用程序“刚刚失败”并返回到shell,而根本没有任何消息。
为了找到问题,我将整个内容包装在main()
中,如下所示:
public static void main(String [] args)
{
try
{
// Init. Swing GUI, run application ...
}
catch(Throwable t)
{
t.printStackTrace();
System.exit(1);
}
}
不幸的是,即使使用此try-catch
块,我仍然无法在命令行上收到任何消息。
您能否建议我找出问题所在的其他方法?
答案 0 :(得分:0)
如果可能,在该机器上启用调试方法。除此以外。您可以将一些调试行写入jar外部的日志文件中。这样,您就会知道JVM是否调用main方法。 如果你的jar依赖于Windows 7 64位机器上的特定jre,也会尝试检查该机器上的java版本。
答案 1 :(得分:0)
您的应用程序可能无异常运行。但是,它根本无法按预期呈现。
一个简单的诊断应该提供更多信息。在命令行中添加“-verbose”开关。这将打印在应用程序调用期间加载的所有类。
$> java -verbose -jar MyApp.jar
应该显示一些额外的信息。注意!确保你像上面演示的那样添加-verbose作为第一个参数。
希望你开始了。
此外,您可以添加System.out.println(“SOME MESSAGE”)作为try块中的第一行。这可能也有帮助。
答案 2 :(得分:0)
仅供记录:我们需要安装64位版本的JRE,现在应用程序再次像魅力一样工作:)