1

ライブラリをアプレットに追加しようとしています。jnlp + deploy Java javascript を使用しています。すべてが正しく構成されているようですが、クラスが見つかりません (class not found 例外)。

これが私のコードです:

JNLP:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="." href="">
    <information>
        <title>KeystoreTestApplet</title>
        <vendor>Paulie</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+"
              href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="KeystoreTestApplet.jar" main="true" />
        <jar href="xmlsec-1.4.5.jar" />
        <jar href="xml-apis-1.3.03.jar" />
        <jar href="xercesImpl-2.9.1.jar" />
        <jar href="xalan-2.7.1.jar" />
        <jar href="sunpkcs11.jar" />
        <jar href="serializer-2.7.1.jar" />
        <jar href="commons-logging-api-1.1.jar" />
        <jar href="commons-logging-1.1.jar" />
    </resources>
    <applet-desc 
         name="KeystoreTestApplet"
         main-class="KeystoreJApplet"
         width="600"
         height="370">
           <param name="MAYSCRIPT" value="true"/> 
     </applet-desc>
     <update check="background"/>
  <security>
    <all-permissions/>
  </security>       
</jnlp>

HTML:

<script src="deployJava.js"></script>
<script>
    var attributes = { codebase:'.', code:'KeystoreJApplet', width:600, height:370} ;
    var parameters = {jnlp_href: 'KeystoreTestApplet.jnlp', mayscript: 'true'} ;
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

アプレット jar、html ページ、およびライブラリ jar は同じディレクトリにあります。

ご協力いただきありがとうございます。

4

2 に答える 2

4
<jnlp spec="1.0+" codebase="." href="">
  • これが組み込みアプレットの場合は、省略しますcodebase
  • アプレットがフリー フローティングの場合は、codebase.

その際、 に適切な値を指定するか、hrefフィールド全体を削除してください。


また、JNLP ファイルが期待どおりに機能しない場合に検証することも有効です。私は(執筆を手伝って)JaNeLAをお勧めします。


ところで - mayscriptJNLP アプレットでサポートされていますか?

于 2011-06-29T15:45:37.570 に答える
2

少し違う場所で実際の問題を発見しました。

ライブラリは jnlp ファイルのパスからではなく、マニフェストに含まれています。マニフェスト パスは、IDE によって lib/{library}.jar として指定されていました。そのため、Java は別のディレクトリで jar を検索していました。

于 2011-07-01T16:54:01.350 に答える