2012-02-13 14 views
1

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では動作しませんように私の心に疑問を投げかけいくつかのこと:

  1. 何かがjarファイルに問題がある(私はそれを正しくエクスポートされませんでした)
  2. test.jnlpが正しく
  3. 構成されていません

どのようにこの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のヘルプファイルによります。コンソールでは、ドキュメントは有効だが、データは間違っている可能性があります!

+0

質問に 'applet'タグを追加しましたが、JNLPはこれがアプリケーションであることを示します(JWSはどちらでも起動できます)。それはアプレットですか、そうではありませんか? –

+0

これはアプレットではありません申し訳ありません!本当に早かったので、私はその質問を終わらせようとしていました。 – bili

+0

確認していただきありがとうございます(また、タグを編集するのもいいです)。 :) –

答えて

2

JNLPファイルにはいくつかの疑わしい点があります。 特にtest.jnlpだが同名の拡張子をロードすると主張する!スタックオーバーフローの原因になっている可能性があります。

JaNeLAを使用してJNLPを検証します。それは他のいくつかの問題を特定するでしょう。 JaNeLAの著者として、メインのJNLP と任意の内線番号を検証しようとしているので、StackOverflowErrorがスローされているかどうか聞いてみたいと思います。私はそれが無限ループに入ると思う(報告してください)。

私は1つだけの瓶があると推測しています。その場合は、extension要素全体を削除してください。

BTW - 実際にLoadbonesFOrmat.jarと呼ばれるJarですか?これは大文字の使用が非常に奇妙なので、私はそれをLoadbonesFormat.jarまたはLoadBonesFormat.jarとしました(つまり、大文字はありませんO)。

+0

ありがとう。後で家に帰って報告してみる。もちろん、LoadbonesFOrmat.jarと呼ばれていますが、LoadbonesFormat.jarであったはずです。私はそれが起こった方法を正確に覚えていません... – bili

+0

はい、あなたは1つだけのJARファイルがあります。 – bili

+0

Cool。 JNLPファイルについては、JaNeLAのコメントが多いはずです(コメント1について)。 –

関連する問題