Исключение ClassNotFoundException в приложении доверенной библиотеки Java Web Start

Я работал над приложением для замены апплета, которое должно работать под Java 1.8, поэтому я подписал все JAR-файлы, используя доверенный сертификат, и добавил атрибут Trusted-Library: true ко всем их MANIFEST.MF файлам.

Мой JNLP выглядит так:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://localhost:8080/myWebApp/myApp/
"href="myAppLaunch.jnlp" spec="1.0+">
    <information>
        <title>My JWS Application</title>
        <vendor>My Company</vendor>
        <homepage href=""/>
        <description>This application is an applet replacement that needs to satisfy the requirements of a High Security setting in a Java 1.8 environment</description>
        <description kind="short">My App</description>
    </information>
    <update check="always"/>
    <security>
<all-permissions/>
</security>
    <resources>
        <j2se version="1.7+"/>
        <jar href="myApp.jar" main="true"/>
    <jar href="lib/commons-httpclient-3.0.1.jar"/>
<jar href="lib/commons-logging-1.1.jar"/>
<jar href="lib/commons-codec-1.3.jar"/>
<jar href="lib/dmapiclientlib-1.3.03.jar"/>
<jar href="lib/mail.jar"/>
<jar href="lib/activation.jar"/>
<jar href="lib/log4j-1.2.17.jar"/>
<jar href="lib/datedFileAppender-1.0.2.jar"/>
</resources>
    <application-desc main-class="com.myCompany.myApp.myMainClass">
    <argument>action=myAction</argument>
</application-desc>
</jnlp>

Когда я запускаю приложение через Java Web Start, я получаю ClassNotFoundException для класса (URIException) в одном из JAR-файлов, от которых зависит это приложение (commons-httpclient-3.0.1.jar).

Я создавал это приложение с помощью NetBeans и уже однажды делал это успешно, но теперь по какой-то причине я не могу обойти эту ошибку. Что я делаю не так?


person Sheldon R.    schedule 03.11.2016    source источник
comment
1) Обязательно проверьте JNLP с помощью JaNeLA, доступного на моем общий диск. 2) После проверки без ошибок (игнорируйте предупреждения и оптимизации) удалите его и попробуйте приложение. очередной раз. Если он по-прежнему выдает ошибку, опубликуйте а) содержимое JNLP. б) структура сервера, показывающая расположение JNLP и JARS.   -  person Andrew Thompson    schedule 04.11.2016
comment
Спасибо за ответ, Андрей. Я скачал файл janela.jar с вашего Google Диска, но не понимаю, как его использовать. Я просто запускаю его, т.е. java janela.jar и появляется графический интерфейс, или мне нужно включить имя файла JNLP в команду?   -  person Sheldon R.    schedule 04.11.2016
comment
Я просто запускаю его? Он имеет графический интерфейс и представляет собой исполняемый файл Jar, просто дважды щелкните его! Надеюсь, остальное станет понятно из элементов управления и меток.   -  person Andrew Thompson    schedule 04.11.2016
comment
На самом деле, двойной щелчок по JAR вызвал в моей системе только инструмент архивации WinRAR, но я запустил его, запустив его в командной строке. Однако я не знаю, вызвало ли это какие-либо значимые ошибки, поскольку этот JNLP работал до того, как я подписал свои JAR-файлы доверенным сертификатом. У меня складывается впечатление, что зависимые JAR-файлы не загружаются, несмотря на то, что они подписаны одним и тем же сертификатом, а также обозначены как доверенная библиотека. Любая идея, что может быть причиной этого?   -  person Sheldon R.    schedule 04.11.2016
comment
Есть идеи, что может быть причиной этого? Я мог бы, если вы последуете второму предложению в моем первом комментарии..   -  person Andrew Thompson    schedule 04.11.2016
comment
Будьте любезны, Эндрю :) Приложение JWS myApp находится в папке с именем myApp, которая является подпапкой внутри веб-приложения с именем myWebApp. Таким образом, расположение файла JAR приложения будет в каталоге [Tomcat Home]\webapps\myWebApp\myApp, а все файлы JAR, от которых он зависит, находятся в подпапке с именем lib. Я отредактирую вопрос, чтобы включить JNLP   -  person Sheldon R.    schedule 07.11.2016
comment
После некоторых экспериментов я думаю, что знаю, в чем проблема. Пытаясь загрузить все эти JAR-файлы как доверенные библиотеки, я редактировал файлы MANIFEST.MF после того, как JAR-файлы были подписаны, и это просто аннулирует подписи, не так ли?   -  person Sheldon R.    schedule 07.11.2016
comment
Веди себя хорошо, Эндрю :) Будь умнее, Шелдон. ;)   -  person Andrew Thompson    schedule 07.11.2016
comment
Засчитывается ли ответ на мой собственный вопрос? :)   -  person Sheldon R.    schedule 08.11.2016


Ответы (1)


Я считаю, что проблема, с которой я столкнулся, связана с изменением файлов JAR (путем добавления атрибута доверенной библиотеки) после того, как файлы JAR были подписаны.

person Sheldon R.    schedule 08.11.2016