2012-04-19 4 views
2

У меня возникла проблема при попытке запустить файл jar с помощью JNLP. Мы ранее запускали апплет без JNLP без каких-либо проблем. Мы хотим запустить три разных банки, которые хранятся в одном каталоге вместе с файлом jnlp. Все банки загружаются, но мы видим классNotFoundError, как только мы пытаемся загрузить класс из одного из внешних банок (то есть те, которые не являются главными). Приложение работает до тех пор, пока это не произойдет, поэтому наша основная банка, похоже, выполняется. Файл JNLP выглядит следующим образом:Класс не найден Исключение при запуске апплета с использованием 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 с Джанеле, который не дает мне никаких ошибок. Он работает для запуска апплета из 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'); 

+0

Я не вижу ничего плохого ни с JNLP (хороший вызов при использовании JaNeLA), ни с помощью элемента applet/JS. Какой браузер (ы) вы тестируете? –

+0

Chrome и Firefox. Я думаю, что нашел свою основную причину. После загрузки всех банок сервер получает новый запрос с запросом класса, который позже не найден. Но почему он ищет файл класса в моей папке jar, а не в банке? – Erik

+0

[Codebase] (http://docs.oracle.com/javase/6/docs/technotes/guides/jweb/applet/codebase_determination.html) param в теге jnlp? Это было в моем ответе. – Fuhrmanator

ответ

0

Мои JNLPs использовать внешние банки, и я определил codebase="http://example.com/full/path/to/jars/", а также href="http://example.com/full/path/to/jars/file.jnlp" в <jnlp> теге.

Редактировать Попробуйте мой working example - click the Lancer le planificateur button, чтобы увидеть его в действии.

edit2 чек из JNLP as a Applet in HTML page, чтобы увидеть, если Object, а не Applet поможет.

Смежные вопросы