2011-07-28 81 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

相關問題