2

JNLP を使用して jar ファイルを起動しようとしたときに問題が発生しました。以前、JNLP なしで問題なくアプレットを起動しました。jnlp ファイルと一緒に同じディレクトリに保持されている 3 つの異なる jar を起動します。すべての jar がダウンロードされますが、外部 jar の 1 つ (つまり、メインの jar ではないもの) からクラスをロードしようとするとすぐに classNotFoundError が表示されます。アプリケーションはこれが発生するまで実行されるため、メインの jar が実行されているように見えます。JNLP ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="/jars/file.jnlp">
<information>
    <title>Client</title>
    <vendor>My Vendor</vendor>
    <description>Description</description>
    <description kind="short">Desc</description>
    <offline-allowed />
</information>
<security>
    <all-permissions />
</security>

<resources>
    <j2se version="1.6+" />
    <jar href="mainJar.jar" main="true" download="eager"/>
    <jar href="extJar1.jar" main="false" download="eager"/>
    <jar href="extJar2.jar" main="false" download="eager" />
</resources>
<applet-desc 
    name="MyApp" 
    main-class="path-to-main-class"
    width="1"
    height="1">
</applet-desc>
</jnlp>

アプレットは、次のように HTML ファイルから起動されます。

<applet
    code="com.mycompany.net.MyMainClass" 
    name="MyApp" 
    archive="/jars/extJar1.jar, /jars/extJar2.jar, /jars/mainJar.jar" 
    id="myId" 
    width="1" 
    height="1" 
    mayscript
    alt="The java plugin must be installed.">
            <param name="jnlp_href" value="/jars/file.jnlp"/>
    Java 1.5 or higher required.  
</applet>

Janela で jnlp をチェックしたところ、エラーは発生しませんでした。jnlp ファイルがなくても、Eclipse からアプレットを実行できます。また、ファイルまたはファイルへの URL を指定して、javaws から jnlp ファイルを開くこともできます。そのため、間違っているのはhtmlだと思います。ただし、これは私が得た限りです。次のJavaScriptで起動しようとしましたが、同じ結果になりました:

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {
        id:'myId', 
  code:'com.mycompany.net.MyMainClass', 
  width:1, 
  height:1, 
  name:"MyApp"
};
    var parameters = {
        jnlp_href:"/jars/file.jnlp",
        archive:"/jars/extJar1.jar, /jars/extJar2.jar, /jars/mainJar.jar",
    };
deployJava.runApplet(attributes, parameters, '1.6');

4

1 に答える 1