2014-02-23 60 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

相关问题