Java Web Start — ClassNotFoundException при запуске

Сейчас я пытаюсь развернуть приложение Java с помощью Java Web Start. Приложение отлично работает при автономной работе. Я экспортировал проект как исполняемый файл .jar, а затем написал соответствующий файл jnlp.

Однако при запуске из файла jnlp приложение при запуске возвращает следующую ошибку:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: someClass
........
Caused by: java.lang.ClassNotFoundException: someClass
.........

Я экспортировал файл .jar с помощью Eclipse Helios с опцией «Упаковать необходимые библиотеки в сгенерированный JAR».

Вот как выглядит мой файл jnlp (я заменил некоторую информацию):

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" 
    codebase="................" 
    href="thisJNLP.jnlp">
    <information>
        <title>Whatever</title>
        <vendor>Whatever</vendor>
    </information>
    <security>
        <all-permissions/>
    </security>

    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+"
              href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="signed.jar" main="true" />

    </resources>
    <application-desc
         name="Whatever"
         main-class="thisProject.main"
         width="300"
         height="300">
     </application-desc>
     <update check="background"/>
</jnlp>

Кроме того, я использую WebLogic 10 для размещения файлов, но сомневаюсь, что это что-то изменит.

Может ли кто-нибудь помочь мне?

Спасибо за любой вклад!


person zw324    schedule 07.07.2011    source источник
comment
Итак, вы пробовали ту же самую банку в автономном режиме, то есть запуская ее из командной строки? Уверены, что все необходимые классы есть в JAR?   -  person Thomas    schedule 07.07.2011
comment
@Thomas Да, он отлично работает в автономном режиме.   -  person zw324    schedule 07.07.2011


Ответы (1)


Из Руководства разработчика WebStart. :

Все ресурсы приложения должны быть получены из файлов JAR, указанных в разделе ресурсов файла JNLP, или получены явно с помощью HTTP-запроса к веб-серверу. Рекомендуется хранить ресурсы в файлах JAR, так как Java Web Start будет кэшировать их на локальном компьютере.

Таким образом, механизм загрузки классов отличается для приложений WebStart. Я предполагаю, что это вариант упаковки «Упаковать необходимые библиотеки в сгенерированный JAR», который вызывает проблемы в вашем случае.

Содержится ли класс someClass в банке, содержащейся в вашем файле signed.jar? Если это так, это подтверждает эту теорию - попробуйте создать отдельные jar-файлы (не забудьте подписать их все!) и ссылаться на каждый из них в разделе <resources> как на отдельную запись <jar>.

person emboss    schedule 07.07.2011
comment
Спасибо за ответ! Я думаю, что это должно быть причиной, и я проверю... p.s. Извините за редактирование, но я просто удалил информацию о своей программе, которую забыл удалить. - person zw324; 08.07.2011