2011-07-28 4 views
0

Hyありがとう、webstartアプリがMacで起動できないのはなぜですか? (vmargがありません)

私はjavawsで起動するアプリケーションを開発しました。アプリケーション自体はlinux(ubuntu 10.04 LTS)、Windows 7、およびMac OSで動作することがテストされています。ローカルで起動した場合、問題なくswtを使用してこれらのプラットフォームすべてで動作します。

いくつかの苦労した後で、アプリケーションは現在、すべてのアーキテクチャを備えたLinuxマシンとWindowsマシンで起動します。この中で説明したように

<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> 

私はMacOSののいずれかの下SWTアプリケーションを実行するには、そのは、Java-VM XstartOnFirstThreadを与えるとのjavawsとJNLPファイルを同じことを行う必要がある知っているが、次のressourceタグを必要としますquestion macOSはswtとj2se="xy"の定義に問題があるかもしれませんので、私は特定のもの、全くグローバルなものではなく、 "generic"のものも試してみました(例:j2se="1.5+")。上でローカルに実行されたときにjarファイル自体はかなり完璧に実行されているため

私は、引数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(雪Leopard)64ビット
  • Java Runntime 1.6 64ビット
  • SWTバージョン:3.6.2-cocoa-macosx-x86_64

は、私は誰かが同じ問題を抱えていたと

歓声は、JNLPファイルが無効である

答えて

1

stoppal、すべてのansweresのため、事前に、THXをそれを修正することができました願っています。 JaNeLA &でそれをチェックしてください。結果が赤で表示されていない場合は、それがなぜこのシステム、他のシステムで失敗するのか不思議に思ってください。

+1

[JaNeLa](http://pscode.org/janela/)のヒントをいただきありがとうございました。本当に助けになりました。問題を修正できました.3つのプラットフォームすべてで美しく動作します。 – 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です。

関連する問題