Я столкнулся с проблемой при попытке запустить файл jar с помощью JNLP. Ранее мы без проблем запускали апплет без JNLP. Мы хотим запустить три разных jar-файла, которые хранятся в одном каталоге вместе с файлом jnlp. Все 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>
Затем я проверил jnlp с Janela, который не дает мне ошибок. Он работает для запуска апплета из Eclipse, а также без файла jnlp. Это также работает, чтобы открыть jnlp-файл из javaws, указав либо файл, либо URL-адрес файла. Это заставляет меня думать, что это неправильный 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');