2011-07-28 37 views
0

海兰那里,为什么webstart应用程序无法在mac上启动? (缺少VMARG)

我开发的应用程序是通过javaws的将要开始,本身被测试以在linux上运行该应用程序(的ubuntu 10.04 LTS),窗口7和Mac OS。如果从本地启动,它将使用swt并在所有这些平台上运行而不会出现问题。

经过一番艰苦的努力,现在应用程序开始在所有体系结构的linux和windows计算机上,如果它不适合mac!

我知道,运行在MacOS一个需要一个SWT应用程序给了Java虚拟机的XstartOnFirstThread和做同样与javaws的JNLP文件需要下面的ressource标签:

<resources os="Mac"> 
    <j2se version="1.5+" javaws-vm-args="-XstartOnFirstThread" /> 
    <nativelib href="swt-3.6.2-cocoa-macosx-x86_64.jar" /> 
    <jar href="swt-3.6.2-cocoa-macosx-x86_64.jar" /> 
    </resources> 

在此讨论question macOS可能会遇到swt和j2se="xy"定义的问题,所以我尝试使用特定的一个,根本没有(甚至不是全局的)和“通用”(例如:j2se="1.5+")。

我怀疑论点javaws-vm-args="-XstartOnFirstThread"java-vm-args="-XstartOnFirstThread"(发现这种说法有和没有在互联网上的“WS”的一部分,并试图两者)不受javaws的传递,因为当在本地执行的罐子本身是相当完美运行苹果电脑。

现在的实际问题是,随着argumemts的每一个可能的组合应用程序总是与以下异常退出:

org.eclipse.swt.SWTException: Invalid thread access 
    at org.eclipse.swt.SWT.error(Unknown Source) 
    at org.eclipse.swt.SWT.error(Unknown Source) 
    at org.eclipse.swt.SWT.error(Unknown Source) 
    at org.eclipse.swt.widgets.Display.error(Unknown Source) 
    at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source) 
    at org.eclipse.swt.widgets.Display.create(Unknown Source) 
    at org.eclipse.swt.graphics.Device.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.getDefault(Unknown Source) 
    at foo.bar.WebStartRunnable.<init>(WebStartRunnable.java:85) 
    at foo.bar.WebStartRunnable.main(WebStartRunnable.java:155) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.javaws.Launcher.executeApplication(Launcher.java:1909) 
    at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1847) 
    at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1609) 
    at com.sun.javaws.Launcher.run(Launcher.java:138) 
    at java.lang.Thread.run(Thread.java:680) 

这里是再次规格:

  • OS:MacOS的10.6(雪豹)64位
  • Java Runntime 1.6 64位
  • SWT版本:3.6.2-cocoa-macosx-x86_64

我希望有人有同样的问题,并能解决它,THX提前对所有answeres,

欢呼stoppal

回答

1

JNLP文件是无效的。用JaNeLA &核对它,然后再纠正为什么它可能会失败,或者是其他系统。

+1

感谢与[JaNeLa](http://pscode.org/janela/)的提示,真的帮了很大忙,我能够解决这个问题,现在它在所有三个平台上都能很好地工作。 – Stoppal

2

因此,对于所有在那里有同样的问题这一斗争,或者只是想一个正常运作的JNLP文件作为参考,这里是我的:

<?xml version="1.0" encoding="UTF-8" ?> 
<jnlp spec="1.0+" codebase="http://your-host:8080/folder_with_jar_stuff/" href="webstart.jnlp"> 
    <information> 
    <title>Your Applications Title</title> 
    <vendor>Your name or company or whatever</vendor> 
    <homepage href="http://www.a-really-funny-domain.com" /> 
    <description>This application does something really usefull and will make the world a better place due to it being lorem ipsum...</description> 
    <icon kind="splash" href="splash.bmp"/> 
    </information> 

    <security> 
    <all-permissions /> 
    </security> 

    <resources> 
    <jar href="your_app_as_jar.jar" /> 
    </resources> 

    <resources os="Linux" arch="x86_64"> 
    <nativelib href="swt-native-3.6.2-gtk-linux-x86_64.jar" /> 
    </resources> 
    <resources os="Linux" arch="amd64"> 
    <nativelib href="swt-native-3.6.2-gtk-linux-x86_64.jar" /> 
    </resources> 
    <resources os="Linux"> 
    <nativelib href="swt-native-3.6.2-gtk-linux-x86.jar" /> 
    </resources> 

    <resources os="Mac" arch="x86_64"> 
    <j2se version="1.6" java-vm-args="-XstartOnFirstThread" /> 
    <nativelib href="swt-3.6.2-cocoa-macosx-x86_64.jar" /> 
    </resources> 

    <resources os="Windows" arch="x86"> 
    <nativelib href="swt-native-3.6.2-win32-x86.jar" /> 
    </resources> 
    <resources os="Windows" arch="x86_64"> 
    <nativelib href="swt-native-3.6.2-win32-x86_64.jar" /> 
    </resources> 
    <resources os="Windows" arch="amd64"> 
    <nativelib href="swt-native-3.6.2-win32-x86_64.jar" /> 
    </resources> 

    <resources> 
    <jar href="log4j-1.2.16.jar" /> 
    </resources> 

    <application-desc main-class="package.contains.class.with.main.method.ClassName" /> 

</jnlp> 

我知道这还远远没有完成,但它为我工作。其他有用的链接是: A JNLP tag refference list 并相信与否,来自oracle的specification

相关问题