18

私はここに来たばかりで、英語が下手で申し訳ありません。

Java Web Start テクノロジによって提供されるアプレット クラスに少し問題があります。Web Start が正しくダウンロードするプラットフォーム依存の JAR ファイルがいくつかありますが、オブジェクトgetResourceAsStream(String fileName)のメソッドでコンテンツを取得すると、最初に WEB サーバーに対してClassLoaderGET 要求が行われ、応答を受け取った後、JAR ファイルからリソースが正しく読み込まれます。問題は、JAR 内に多くのファイルがあるため、WEB サーバーに多くの不要な負荷がかかり、その結果、アプレットを使用できるようになるまで長時間待たなければならないことです。fileName404 Not Found

codebase_lookupGoogle で検索すると、 valueでパラメーターを追加すると言われているいくつかの議論が見つかりましたfalseが、これで問題は解決していません。このページは、パラメーターに関連してcodebase_lookup、アプレットのデフォルトの動作は JAR ファイルからリソースをロードし、次にアプレット コードベースからリソースをロードすることであると述べています。私の場合、動作は逆です。

eager="true"ファイル内の各 JAR リソースの属性も追加しました.jnlpが、動作は常に同じです。アプレットは NetBeans で開発および構築され、生成された html および jnlp ファイルは次のとおりです。

launch.html

<applet width="300" height="300">
        <param name="jnlp_href" value="launch.jnlp"/>
        <param name="codebase_lookup" value="false"/>
</applet>


launch.jnlp

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://192.168.23.4/contact" href="launch.jnlp" spec="1.0+">
<information>
    <title>ContactNR</title>
    <vendor>Roberto Santini</vendor>
    <homepage href=""/>
    <description>ContactNR</description>
    <description kind="short">ContactNR</description>
</information>
<resources>
<j2se version="1.5+"/>
<jar eager="true" href="ContactNR.jar" main="true"/>
<jar eager="true" href="lib/VDK.jar"/>
<security>
    <all-permissions/>
</security>
</resources>
<resources arch="amd64" os="Linux">
    <jar eager="true" href="lib/liblinux64.jar"/>
</resources>
<resources arch="x86_64" os="Linux">
    <jar eager="true" href="lib/liblinux64.jar"/>
</resources>
<resources arch="x86" os="Linux">
    <jar eager="true" href="lib/liblinux.jar"/>
</resources>
<resources arch="i386" os="Linux">
    <jar eager="true" href="lib/liblinux.jar"/>
</resources>
<resources os="Windows">
    <jar eager="true" href="lib/libwin.jar"/>
</resources>
<resources os="MacOs">
    <jar eager="true" href="lib/libmac.jar"/>
</resources>
<applet-desc height="300" main-class="com.netresults.voip.ContactNR" name="ContactNR" width="300">
    <param name="codebase_lookup" value="false"/>
</applet-desc>
</jnlp>

誰かが私を助けることができますか?どうもありがとう、

ロベルト。

4

2 に答える 2

3

JAR ファイルにインデックスを追加することで、この問題を解決しました。jar をビルドしたら、次のコマンドを実行します。

JAR -i <path/to/jar-file>

実際の JAR 化とは別のステップとして実行する必要があります。

説明: startup-process が META-INF で INDEX.LIST を検出すると、これを信頼し、サーバー上のファイルを探しません。

于 2013-11-25T09:41:08.850 に答える
2

私は最近、GET を介して不足しているリソースを照会する log4j で同様の問題を抱えていました。あなたのケースでは、Web ベースのクラスパスがまだバンドルされた jar よりも優先されているのではないでしょうか? さて、すべての瓶を 1 つに詰めようとするかもしれません。もちろん、これはビルドを複雑にしますが、これを手動で 1 回だけ試して、問題がなくなるかどうかを確認することもできます。

于 2011-03-05T11:13:28.737 に答える