使用JavaWebStart在Mac上启动SWT

使用JavaWebStart在Mac上启动SWT,java,macos,swt,java-7,java-web-start,Java,Macos,Swt,Java 7,Java Web Start,目标:使用Java 7在Mac上启动SWT Web Start应用程序 为了在Mac OS X上运行SWT RCP应用程序,有很好的文档证明有必要将其作为Java虚拟机参数的一部分 不幸的是,JavaWebStart似乎删除了这个参数。查看Java Web Start的详细跟踪日志: temp: returning LaunchDesc from XMLFormat.parse(): <jnlp spec="1.0+" codebase=“..." href=“..."> &l

目标:使用Java 7在Mac上启动SWT Web Start应用程序

为了在Mac OS X上运行SWT RCP应用程序,有很好的文档证明有必要将其作为Java虚拟机参数的一部分

不幸的是,JavaWebStart似乎删除了这个参数。查看Java Web Start的详细跟踪日志:

temp: returning LaunchDesc from XMLFormat.parse():

<jnlp spec="1.0+" codebase=“..." href=“...">
  <information> ...

  <resources>
    <java java-vm-args="-XstartOnFirstThread -Xms1024m" version="1.6+"/> ...
同样,日志中的其他地方:

  Selected JVMParam: [JVMParameters: isSecure: false, args: -XstartOnFirstThread -Xms1024m -Djnlp.serverIP=... -Djnlp.eclipse.product=... -Djnlp.debugLevel=1]
  Running  JVMParam: [JVMParameters: isSecure: true, args: "-Xms1024m -Djnlp.serverIP=... -Djnlp.eclipse.product=... -Djnlp.debugLevel=1"]
请注意,startOnFirstThread已正确标识,但随后未在下一个处理阶段传递。也许它不被认为是“安全:真的”

。。。最后我得到了恐惧:

OS X Detected...
***WARNING: Display must be created on main thread due to Cocoa restrictions.
org.eclipse.swt.SWTException: Invalid thread access
        at org.eclipse.swt.SWT.error(SWT.java:4361)
Web Start正确解析-XstartOnFirstThread和-Xms1024m,但只选择传递-Xms1024m而不是-XstartOnFirstThread

同样,如果在Web Start开始加载应用程序的几秒钟内执行
ps aux | grep ms1024m
,我会得到:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -Xms1024m
-D... -Djnlp.osgi.instance.area=@none -Djnlp.osgi.configuration.area=@none -Djnlp.eclipse.product=... -Djnlp.javaws.cfg.jauthenticator=true -Djnlp.java.util.Arrays.useLegacyMergeSort=true -Djnlp.debugLevel=1 -Xbootclasspath/a:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/javaws.jar:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy.jar:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/plugin.jar
-classpath /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy.jar
-Djnlpx.vmargs="-Xms1024m -Djnlp.serverIP=... -Djnlp.osgi.instance.area=@none -Djnlp.osgi.configuration.area=@none -Djnlp.eclipse.product=... -Djnlp.javaws.cfg.jauthenticator=true -Djnlp.java.util.Arrays.useLegacyMergeSort=true -Djnlp.debugLevel=1" -Xdock:icon=/Users/.../Library/Application Support/Oracle/Java/Deployment/cache/6.0/8/b871708-6a8509fb.icns
-Xdock:name=... -Djnlpx.jvm=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
-Djnlpx.splashport=-1 -Djnlpx.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
-Djnlpx.remove=false -Djnlpx.offline=false -Djnlpx.relaunch=true -Djnlpx.session.data=/var/folders/bg/v8l2x6vn7xj1swx_0ksv7rcddzd2cb/T/session689216052548979970
-Djnlpx.heapsize=NULL,NULL -Djava.security.policy=file:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/javaws.policy
-DtrustProxy=true -Xverify:remote -Dsun.awt.warmup=true com.sun.javaws.Main ://.../webstart.jnlp
同样,使用Xms1024m,但不使用XstartOnFirstThread

(注意,此处发布的日志中删除了许多标识信息,但这不应影响分析)

我还确认,将相关文件从服务器复制到本地计算机,并通过
java-xstartonfirsthread…
运行应用程序不会出现问题

如何使用Java 7在Mac上启动SWT Web Start应用程序?如何使startOnFirstThread被Java 7成功处理?还有别的办法绕过SWT Mac的泥潭吗

Mac OS X 10.9.2


Java 1.7.0_60

您是否尝试将该参数设置为可信参数?我没有试过。但是请检查

看起来像Eclipse bug考虑到它是从“java”命令行工作的,这不是Eclipse bug。它只在尝试从java webstart运行时失败。@ChaimKut您读过错误报告了吗?这是一个SWT+WebStart bug,所有SWT bug都被归档在Eclipse bug跟踪器中。与Eclipse本身无关……我同意它描述了一个类似的问题。但是,由于这似乎是一个WebStart问题,因此不太可能在Eclipse/SWT bugs存储库中处理它。这可能是Oracle Java 7的一个副本,没有传递参数。Apple Java 6传递参数。
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -Xms1024m
-D... -Djnlp.osgi.instance.area=@none -Djnlp.osgi.configuration.area=@none -Djnlp.eclipse.product=... -Djnlp.javaws.cfg.jauthenticator=true -Djnlp.java.util.Arrays.useLegacyMergeSort=true -Djnlp.debugLevel=1 -Xbootclasspath/a:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/javaws.jar:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy.jar:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/plugin.jar
-classpath /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy.jar
-Djnlpx.vmargs="-Xms1024m -Djnlp.serverIP=... -Djnlp.osgi.instance.area=@none -Djnlp.osgi.configuration.area=@none -Djnlp.eclipse.product=... -Djnlp.javaws.cfg.jauthenticator=true -Djnlp.java.util.Arrays.useLegacyMergeSort=true -Djnlp.debugLevel=1" -Xdock:icon=/Users/.../Library/Application Support/Oracle/Java/Deployment/cache/6.0/8/b871708-6a8509fb.icns
-Xdock:name=... -Djnlpx.jvm=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
-Djnlpx.splashport=-1 -Djnlpx.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
-Djnlpx.remove=false -Djnlpx.offline=false -Djnlpx.relaunch=true -Djnlpx.session.data=/var/folders/bg/v8l2x6vn7xj1swx_0ksv7rcddzd2cb/T/session689216052548979970
-Djnlpx.heapsize=NULL,NULL -Djava.security.policy=file:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/javaws.policy
-DtrustProxy=true -Xverify:remote -Dsun.awt.warmup=true com.sun.javaws.Main ://.../webstart.jnlp