Java を使用してアプリケーションを開発し、Java Web Start を使用してデプロイしています。私は Mac OS で開発し、Windows XP と 7 でテストして
います。どうやら 7 でのみ奇妙な問題が発生しています。
プロセスが何らかの理由で失敗し、javaws.exe
アプリケーションを再起動できません。JNLP が作成したデスクトップ アイコンをクリックするたびに、別のjavaws.exe
プロセスが生成されますが、何も起こりません。コードは実行されず、public static void main
プログラム エントリ ポイントの最初の行も実行されません。
コマンドラインから起動しようとしましたが、これを修正するのに役立つログやエラー メッセージが表示されません。別の JNLP
を起動しようとしましたが、うまくいきました。
実行中のすべてのjavaws.exe
インスタンスを強制終了すると問題は解決しますが、顧客がそれを行うことは期待できません。
したがって、どういうわけか、Java が失敗するアプリケーションの問題が発生していることを意味します。
これに遭遇しました:アプリが起動され、赤い十字をクリックして閉じ、再度開きました(サーバー側のjarファイルとjnlpファイルを変更しました)。javaws.exe
開かず、すべてのインスタンスを強制終了するまで再び開くことができませんでした。
詳細は次のとおりです。
- Mac OS X.7 で開発
- Windows 7 でテスト済み
- Java 7で実行
- アプリケーションは Eclipse で開発され、SWT UI と他のいくつかのサードパーティ ライブラリを備えています。
- Java コントロール パネルの項目からすべてのロギングをオンにしました
上記の JNLP を実行したときに表示された Java コンソールの内容は次のとおりです。
Java Web Start 10.9.2.05
Using JRE version 1.7.0_09-b05 Java HotSpot(TM) Client VM
User home directory = C:\Users\Bicou
----------------------------------------------------
c: clear console window
f: finalize objects on finalization queue
g: garbage collect
h: display this help message
m: print memory usage
o: trigger logging
p: reload proxy configuration
q: hide console
r: reload policy configuration
s: dump system and deployment properties
t: dump thread list
v: dump thread stack
0-5: set trace level to <n>
----------------------------------------------------
Match: beginTraversal
Match: digest selected JREDesc: JREDesc[version 1.6+, heap=-1--1, args=null, href=http://java.sun.com/products/autodl/j2se, sel=false, null, null], JREInfo: JREInfo for index 0:
platform is: 1.7
product is: 1.7.0_09
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre7\bin\javaw.exe
args is: null
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 2.2.3 found at C:\Program Files (x86)\Java\jre7\
enabled is: true
registered is: true
system is: true
Match: ignoring maxHeap: -1
Match: ignoring InitHeap: -1
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: http://docs.oracle.com/javase/tutorialJWS/deployment/webstart/ex6/webstart_ComponentArch_DynamicTreeDemo/dynamictree-webstart.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
Match: JVM args final:
Match: Running JREInfo Version match: 1.7.0.09 == 1.7.0.09
Match: Running JVM args match: have:<> satisfy want:<>
私の JNLP:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+"
codebase="http://my.url/"
href="UpCab.jnlp">
<information>
<title>UpCab</title>
<vendor>Benoit Duffez</vendor>
<homepage href="http://my.url/" />
<description>Logiciel de gestion de cabinet</description>
<icon href="icon.png" kind="shortcut" />
<icon href="splash.png" kind="splash" />
<offline-allowed />
<shortcut online="true" install="true">
<desktop />
</shortcut>
</information>
<security>
<all-permissions />
</security>
<resources>
<jar href="opencsv-2.3.jar" />
<jar href="iText-2.1.7.jar" />
<jar href="iTextRTF.jar" />
<jar href="sqlite-jdbc-3.7.2.jar" />
<jar href="commons-logging-1.1.1.jar" />
<jar href="httpclient-4.2.jar" />
<jar href="upcab.jar" />
<jar href="httpcore-4.2.jar" />
<jar href="jna.jar" />
<jar href="platform.jar" />
</resources>
<resources os="Windows" arch="x86">
<j2se version="1.6+" />
<jar href="swt-win32-x86.jar" />
</resources>
<resources os="Windows" arch="x86_64">
<j2se version="1.6+" />
<jar href="swt-win32-x86_64.jar" />
</resources>
<resources os="Windows" arch="amd64">
<j2se version="1.6+" />
<jar href="swt-win32-x86_64.jar" />
</resources>
<resources os="Mac" arch="x86_64">
<j2se version="1.6+" java-vm-args="-XstartOnFirstThread" />
<nativelib href="swt-mac-x86_64.jar" />
</resources>
<application-desc main-class="my.full.pkg.Main" />
</jnlp>