В файле запуска отсутствует следующее обязательное поле:

#java #applet #jnlp #next-generation-plugin

#java #апплет #jnlp #плагин следующего поколения

Вопрос:

У меня есть веб-страница, содержащая апплет. Это ссылается на файл JNLP. Веб-приложение обслуживается Tomcat.

Я проверил, что JNLP действителен, используя JaNeLA. Чтобы протестировать это локально, я попытался поместить все файлы ресурсов в один каталог и запустить веб-страницу — апплет был успешно отображен в браузере.

Однако при попытке запустить веб-страницу через Tomcat я получаю эту ошибку

 The following required field is missing from the launch file: <jnlp>
  

Я подозреваю, что файл JNLP не найден, но после попытки поместить его в различные местоположения в каталоге Tomcat webapps и различных настроек параметра codebase по-прежнему никакой радости.

Вот мой файл JNLP

 <?xml version="1.0" encoding="utf-8"?>

   <jnlp href="WWJApplet.jnlp">
    <information>
        <title>World Wind Java Applet Demo</title>
        <vendor>NASA</vendor>
        <homepage href="http://worldwind.arc.nasa.gov"/>
        <description>World Wind Java Applet Demo</description>
        <description kind="short">World Wind Java Applet Demo</description>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
     <resources os="Windows">
       <property name="sun.java2d.noddraw" value="true"/>
     </resources>
     <resources>
        <!--property name="sun.java2d.noddraw" value="true"/-->
        <java version="1.5 "/>
        <j2se href="http://java.sun.com/products/autodl/j2se" version="1.5 " initial-heap-size="512m" max-heap-size="512m"/>
        <jar href="mapviewapplet.jar" main="true"/>
        <!--jar href="WWJApplet.jar" main="true"/-->
        <jar href="worldwind.jar"/>
        <jar href="httpclient-4.0.1.jar"/>
        <jar href="httpcore-4.0.1.jar"/>
        <extension name="jogl"
                   href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/>
     </resources>
     <!-- Width and heigth are overwritten by the surrounding web page -->
     <applet-desc
         name="WWJ Applet"
         main-class="com.pwr.mapviewer.ui.MapApplet"
         width="800" height="600">
        <param name="separate_jvm" value="true" />
     </applet-desc>
   </jnlp>
  

Вот мой тег апплета в HTML

     <applet 
          code="org.jdesktop.applet.util.JNLPAppletLauncher" 
          width=600
          height=400
          archive="mapviewapplet.jar,
                   jogl.jar,
                   gluegen-rt.jar,
                   worldwind.jar">
           <param name="jnlp_href" value="WWJApplet.jnlp"/> <!-- Picked up by new plugin -->
           <param name="codebase_lookup" value="false"/>
           <param name="subapplet.classname" value="com.pwr.mapviewer.ui.MapApplet"/>
           <param name="subapplet.displayname" value="World Wind Applet"/>
           <param name="noddraw.check" value="true"/>
           <param name="progressbar" value="true"/>
           <param name="jnlpNumExtensions" value="1"/>

     </applet>
  

Редактировать: я поместил JNLP вместе со всеми другими моими ресурсами в корневой каталог веб-сервера Apache и использовал URL-адрес в моем атрибуте jnlp_href —

 <param name="jnlp_href" value="http://localhost:80/WWJApplet.jnlp"/>
  

Я все еще не уверен, как это должно быть развернуто в Tomcat, но на данный момент вышеупомянутое решает мою проблему

Ответ №1:

Не уверен, что вы подразумеваете под «подобранным новым плагином» в вашем HTML. Однако, согласно http://download.oracle.com/javase/tutorial/deployment/applet/html.html на файл JNLP должен ссылаться атрибут «jnlp_ref» в теге апплета.

Комментарии:

1. Да, файл jnlp определяется этим атрибутом. Ошибка была вызвана недоступностью файла jnlp. Я поместил его в корневой каталог веб-сервера Apache, что решило проблему.