是的,您绝对需要
-XstartOnFirstThread在Mac OSX上使它正常工作。由于它是VM参数,因此只能在启动应用程序时指定它,因此如果无法使用Mac OS
X,则从代码中检测并设置OS。在Eclipse的现场解决方案创建了一个合适的MacOS X 我Application.app ,这是特定于平台的,并再次,不要在你的情况下是可行的。
但是,我只是尝试使用
-XstartOnFirstThread指定的参数在Windows XP上运行Eclipse
RCP应用程序,而它一点也不抱怨。这意味着您可以在JNLP文件中指定此参数,并且大概在所有其他平台上都将忽略该参数,并在Mac OS X上将其提取。
更新: 如果由于某种原因
-XstartOnFirstThread在任何平台上引起麻烦,或者您只想 做正确的事
,那么还有另一种可能的解决方案。您可以在浏览器中检测到用户的OS(假设该应用程序是从网页启动的),然后为Mac OS X和其他平台提供不同的JNLP。
更新2: 如评论中所指出,有一个有关使用Java Web
Start部署SWT应用程序的教程。我只是在Mac
OS
X(10.6.x)上启动了JNLP,并且可以正常工作。查看示例JNPL,我发现了以下内容:
<?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+" prebase="http://www.eclipse.org/swt/jws/" href="controlexample.jnlp"><information> <title>Control Example</title> <vendor>eclipse.org</vendor> <homepage href="http://www.eclipse.org/swt/jws/" /> <description>A demonstration of SWT Widgets</description> <description>Control Example</description></information><security> <all-permissions /></security><resources> <extension href="swt.jnlp"/> <jar href="controlexample.jar" /></resources><application-desc main- /></jnlp>
请注意最后
<extensionhref="swt.jnlp"/>一行,指向特定于平台的SWT
JNLP文件(此处省略了某些部分):
<?xml version="1.0" encoding="utf-8"?><jnlp spec="1.0+" prebase="http://www.eclipse.org/swt/jws/" href="swt.jnlp"><information> <title>SWT</title> <vendor>eclipse.org</vendor> <homepage href="http://www.eclipse.org/swt/jws/" /> <description>SWT</description></information><security> <all-permissions /></security><resources os="Windows" arch="x86"> <j2se version="1.4+" /> <jar href="swt-win32-windows-x86.jar" /></resources>...<resources os="Mac OS X"> <j2se version="1.5*" java-vm-args="-XstartOnFirstThread"/> <jar href="swt-carbon-osx-universal.jar" /></resources><component-desc/></jnlp>
到文件末尾的位置:Mac OS X特定
-XstartOnFirstThread参数。



