2011-05-03 46 views
2

简而言之,我发现我必须在没有“-XstartOnFirstThread”的情况下启动我的Java应用程序。但是,Eclipse将这个参数提供给通过Eclipse启动的任何Java应用程序(请参阅以调试模式运行的应用程序的属性)。如何删除Eclipse提供的默认命令行参数?

我看不到这些默认参数来自哪里以及如何调整或删除它们。 “运行配置”中的参数字段为空,并且当前JRE的默认参数字段也为空(可以通过Properties - > Java - > Installed JREs - > Edit找到)。

任何帮助,将不胜感激!


长篇小说:当启动一个几乎没有逻辑的基于Swing的应用程序时,我得到了错误*** __NSAutoreleaseNoPool(): Object 0x100166860 of class NSConcreteMapTableValueEnumerator autoreleased with no pool in place - just leaking。我知道应用程序在Windows和Linux下运行良好,所以它不是代码中的错误。

由于应用程序的启动并非无关紧要,所以出现错误时我没有问题。但是,我无法与窗口互动。这意味着我无法专注于它(当我将它带入焦点时它会自动移动到背景),并且我无法单击任何按钮或菜单。

网络一个小时左右的挖掘后,我发现:

  • 这是SWT和AWT在同一时间运行的问题(AWT将挂起加载如果SWT加载)
  • 这问题只从日食开始时,通过控制台启动应用程序(不带参数),一切都正常运行时
  • 错时线程使用(所提到的-XstartOnFirstThread-XstartOnSecondThread参数)发生此问题

现在我接近我的目标,因为我知道我必须用-XstartOnSecondThread(从控制台测试 - 应用程序在第二个线程上正常运行并在第一个线程上抛出发布的错误)替换-XstartOnFirstThread。现在我只需要知道如何删除默认参数,该参数提供给通过Eclipse启动的任何Java应用程序。

再次感谢!


编辑︰像提到的问题发生,由于-XstartOnFirstThread参数。然而,解决方案并不是去除该参数(不可能,请参阅接受的答案):解决方案是从类路径中删除swt.jar

这是由于当swt.jar位于类路径中时,Eclipse会追加此参数。加载库会导致所描述的问题,即使它未被使用。

回答

6

这是一个悬而未决的日食错误:Bug 211625 - Need option to omit -XstartOnFirstThread for

也看看this 'workaround'

+0

非常感谢。这个错误报告帮助我弄清楚,当'swt.jar'在类路径中时,'-XstartOnFirstThread'会自动附加,导致所描述的错误行为。我碰巧在项目中有'swt.jar',因为在我们决定使用Swing之前有人试过了。从引用的库中删除它解决了我的问题。 :) – 2011-05-03 13:55:53

相关问题