Java Web StartのデモをWebに公開して、ユーザーがゲームキャラクターなどを見たり操作したりできるようにしたいのですが。JWSスタックオーバーフローエラー
Eclipseエクスポート実行可能なjar機能を使用してプロジェクトをjarファイルにエクスポートしました。私はjava -jar
でそれを実行することができました。私は以下のようにtest.jnlp
ファイルを設定:
set JAVAWS_TRACE_NATIVE=1
set JAVAWS_VM_ARGS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket, address=8989,server=y,suspend=n"
しかし、私は
javaws test.jnlp
を実行すると:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="/home/bili/JWSdeploytest/" href="test.jnlp">
<information>
<title>Demo</title>
<vendor>binman</vendor>
<description>Test</description>
<offline-allowed/>
</information>
<resources>
<jar href="LoadbonesFOrmat.jar" main="true"/>
<extension name="Demo" href="test.jnlp" />
</resources>
<security>
<all-permissions/>
</security>
<application-desc />
</jnlp>
私は、デバッグは、私はここに他のポストから読み取ることをオンにすると、私のマシン上でローカルにそれをテストしてみました私はStackOverflowError
を持っています。以下が出力されます。
[email protected]:~/JWSdeploytest$ javaws -J test.jnlp
Exception in thread "Demo" java.lang.StackOverflowError
at java.util.LinkedHashMap$LinkedHashIterator.<init>(LinkedHashMap.java:362)
at java.util.LinkedHashMap$LinkedHashIterator.<init>(LinkedHashMap.java:362)
at java.util.LinkedHashMap$KeyIterator.<init>(LinkedHashMap.java:400)
at java.util.LinkedHashMap$KeyIterator.<init>(LinkedHashMap.java:400)
at java.util.LinkedHashMap.newKeyIterator(LinkedHashMap.java:413)
at java.util.HashMap$KeySet.iterator(HashMap.java:891)
at java.io.ExpiringCache.cleanup(ExpiringCache.java:117)
at java.io.ExpiringCache.get(ExpiringCache.java:74)
at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:152)
at java.io.File.getCanonicalPath(File.java:576)
at sun.security.provider.PolicyFile.canonPath(PolicyFile.java:1872)
at java.io.FilePermission$1.run(FilePermission.java:203)
at java.io.FilePermission$1.run(FilePermission.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.FilePermission.init(FilePermission.java:200)
at java.io.FilePermission.<init>(FilePermission.java:266)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at net.sourceforge.jnlp.config.DeploymentConfiguration.getProperty(DeploymentConfiguration.java:269)
at net.sourceforge.jnlp.SecurityDesc.getCustomTrustedPolicy(SecurityDesc.java:172)
at net.sourceforge.jnlp.SecurityDesc.<init>(SecurityDesc.java:159)
at net.sourceforge.jnlp.Parser.getSecurity(Parser.java:553)
at net.sourceforge.jnlp.JNLPFile.parse(JNLPFile.java:594)
at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:178)
at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:211)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeExtensions(JNLPClassLoader.java:370)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.<init>(JNLPClassLoader.java:174)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:295)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeExtensions(JNLPClassLoader.java:370)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.<init>(JNLPClassLoader.java:174)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:295)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeExtensions(JNLPClassLoader.java:370)
3行295:351:370がさらに12回繰り返されます。 出力から、制限されたアクセスがあるかのように見えます。 jarファイルjnlpの実行/読み取りが許可されていることを確認して確認しました。
私はそれをテストするためにウェブサーバーが必要かどうか疑問に思う。しかし、私は前に、JWSでは動作しませんように私の心に疑問を投げかけいくつかのこと:
- 何かがjarファイルに問題がある(私はそれを正しくエクスポートされませんでした)
- は
test.jnlp
が正しく 構成されていません
どのようにこのJWSビジネスを解決することができますか?
編集:私は、拡張子要素を削除して、それは別の例外がスローされます。
[email protected]:~/JWSdeploytest$ javaws test.jnlp
net.sourceforge.jnlp.LaunchException: Fatal: Launch Error: Could not launch JNLP file.
at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:596)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:887)
Caused by: java.lang.IllegalArgumentException: file:/home/bili/JWSdeploytest/LoadbonesFOrmat.jar is not a cacheable resource
at net.sourceforge.jnlp.cache.CacheUtil.getCacheFile(CacheUtil.java:297)
at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:561)
... 1 more
Caused by:
java.lang.IllegalArgumentException: file:/home/bili/JWSdeploytest/LoadbonesFOrmat.jar is not a cacheable resource
at net.sourceforge.jnlp.cache.CacheUtil.getCacheFile(CacheUtil.java:297)
at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:561)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:887)
この1つは、より直感的なようだと私は私が正しくJarファイルをパックされていないこのtimethatポジティブです。後でもう一度試してみよう。ここで がJaNeLAから出力されます:
content type application/xml does not equal expected type of application/x-java-jnlp-file
XML encoding not known, but declared as utf-8
Codebase '/home/bili/JWSdeploytest/' is a malformed URL! Defaulting to file:/home/bili/JWSdeploytest/test.jnlp
Codebase '/home/bili/JWSdeploytest/' is a malformed URL! Defaulting to file:/home/bili/JWSdeploytest/test.jnlp
Codebase '/home/bili/JWSdeploytest/' is a malformed URL! Defaulting to file:/home/bili/JWSdeploytest/test.jnlp
Codebase '/home/bili/JWSdeploytest/' is a malformed URL! Defaulting to file:/home/bili/JWSdeploytest/test.jnlp
Downloads can be optimized by specifying a resource size for 'LoadbonesFOrmat.jar'.
The resource download at LoadbonesFOrmat.jar can be optimized by removing the (default) value of download='eager'.
Lazy downloads might not work as expected for LoadbonesFOrmat.jar unless the download 'part' is specified.
私はCVC-複雑-type.2.4.aを取り除くために、リソース要素の上にセキュリティ要素を移動しました:ウェブサイト上JaNeLaのヘルプファイルによります。コンソールでは、ドキュメントは有効だが、データは間違っている可能性があります!
質問に 'applet'タグを追加しましたが、JNLPはこれがアプリケーションであることを示します(JWSはどちらでも起動できます)。それはアプレットですか、そうではありませんか? –
これはアプレットではありません申し訳ありません!本当に早かったので、私はその質問を終わらせようとしていました。 – bili
確認していただきありがとうございます(また、タグを編集するのもいいです)。 :) –