Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запустить апплет со сторонними библиотеками? 
:(
    Опции темы
isabsent
Дата 3.6.2010, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Ситуация: стоит NetBeans 6.8 с интегрированным Tomcat 6 (установливались одновременно из одного дистрибутива). В NetBeans создан и отлажен сервлет и в отдельном проекте апплет - оба с использованием сторонних библиотек (jar). Под NetBeans они прекрасно взаимодействуют, всё работает.  Что нужно сделать чтобы с другого компа зайти на html-страницу проекта, которая запускает апплет и запустить его, чтобы он отработал с сервлетом? 

Пробовал выдирать руками class-файлы из bild и раскладывать их по директориям Tomcat'а. Работает, но только если нет сторонних библиотек в проекте. С библиотеками получаю в Java-консоль сообщение об ошибке - то ли classLoader не может найти чего-то то ли защита JVM не даёт ему загрузить то что classLoader хочет... 

Не могу нигде найти толкового описания этого процесса - или устаревшие, или не работающие. :(
PM MAIL   Вверх
isabsent
Дата 4.6.2010, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Всем, кто наступит на мои грабли, а именно:

Exception in thread "Thread-70" java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)

Надо подписывать сертификатом не только сам апплет, но и все сторонние библиотеки, которые он использует... smile 
А складывать можно куда угодно почти что  smile 

Это сообщение отредактировал(а) isabsent - 4.6.2010, 10:47
PM MAIL   Вверх
diyana
Дата 21.4.2011, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.4.2011

Репутация: нет
Всего: нет



Ситуация: Есть апплет, отлаженный в NetBeans.
В нём я использую: j3dcore.jar, j3dutils.jar, vecmath.jar.
при запуске апплета, в консоли:
Код

20.04.2011 19:47:23 javax.media.j3d.NativePipeline getSupportedOglVendor
SEVERE: java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path
java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path
 at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
 at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path
 at java.lang.ClassLoader.loadLibrary(Unknown Source)
 at java.lang.Runtime.loadLibrary0(Unknown Source)
 at java.lang.System.loadLibrary(Unknown Source)
 at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
 at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
 at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
 at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299)
 at HelloJava3D.<init>(HelloJava3D.java:52)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
 at java.lang.reflect.Constructor.newInstance(Unknown Source)
 at java.lang.Class.newInstance0(Unknown Source)
 at java.lang.Class.newInstance(Unknown Source)
 at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
 at java.awt.event.InvocationEvent.dispatch(Unknown Source)
 at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
 at java.awt.EventQueue.access$000(Unknown Source)
 at java.awt.EventQueue$1.run(Unknown Source)
 at java.awt.EventQueue$1.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
 at java.awt.EventQueue.dispatchEvent(Unknown Source)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.run(Unknown Source)
Exception: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: no j3dcore-d3d in java.library.path

Насколько я понимаю, проблема в использовании нативных библиотек(j3dcore-d3d, j3dcore-ogl, j3dcore-ogl-cg, j3dcore-ogl-chk). Есть ли возможность загружать эти библиотеки пользователю вместе с апплетом? Или может есть иные методы решения проблемы?
PM MAIL   Вверх
dobrolub
Дата 21.4.2011, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: нет
Всего: 16



копай в сторону applet + jnlp_href

jnlp позволяет поставлять dlls вместе с jar'ами монами

см: nativelib
http://download.oracle.com/javase/tutorial...FileSyntax.html

Код

 <applet
        alt = "Dynamic Tree Applet Demo"
        code = 'appletComponentArch.DynamicTreeApplet'
-->>jnlp_href = 'dynamictree-applet.jnlp', 
        width = 300, 
        height = 300 /> 


Это сообщение отредактировал(а) dobrolub - 21.4.2011, 00:43
PM   Вверх
diyana
Дата 28.4.2011, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.4.2011

Репутация: нет
Всего: нет



dobrolub, 
спасибо, что помог понять, куда копать)

в апплете я подписала все jarы, и у меня всё отлично работает на машине, где установлена Java3d(т.е. 4 файла dll лежат в системной папке). А на машине без Java3d пишется, что нет классов, типа javax.media.j3d.Canvas3D и ещё много других, относящихся к java3d. 
dobrolub, из вашего ответа поняла, что dll должен оказаться внутри jara. Как это сделать? Пыталась загрузить все dll в проект в netbeans, но в итоге они нигде не сохраняются внутри самого проекта. 

привожу html и jnlp

html
Код

 <applet
        alt = "Earth"
        code = 'HelloJava3D'
    jnlp_href = '4.jnlp', 
        width = 950, 
        height = 950
/> 


jnlp
Код

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Earth</title>
        <vendor>earth</vendor>
        <offline-allowed/>
    </information>
    <security>
       <all-permissions/>
    </security>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+"
              href="http://java.sun.com/products/autodl/j2se"/>
       <nativelib href = "j3dcore.jar"/>
       <nativelib href = "j3dutils.jar"/>
       <nativelib href = "vecmath.jar" />
        <jar href="Ex.jar" main="true" />
       

    </resources>
    <application-desc
         name="Earth"
         main-class="HelloJava3D"
         width="950"
         height="950">
     </application-desc>
     <update check="background"/>
</jnlp>


PM MAIL   Вверх
diyana
Дата 28.4.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 11.4.2011

Репутация: нет
Всего: нет



Теперь появилась новая проблема!
я изменила свой jnlp
Код

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Earth</title>
        <vendor>earth</vendor>
        <offline-allowed/>
    </information>
    <security>
       <all-permissions/>
    </security>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+"
              href="http://java.sun.com/products/autodl/j2se"/>

        <jar href="Ex.jar" main="true" />
       <jar href = "j3dcore.jar"/>
       <jar href = "j3dutils.jar"/>
       <jar href = "vecmath.jar"/>       
       <nativelib href = "j3dutilsDLL.jar"/>
       <nativelib href= "j3dDLL.jar"/>
   
    </resources>
    <applet-desc
         name="Earth"
         main-class="HelloJava3D"
         width="950"
         height="950">
     </applet-desc>
     <update check="background"/>
</jnlp>

И теперь мой апплет запускается в java web start launcher!
но при запуске в браузере до сих пор возникает ошибка!
вот лог из оперы:
Код

exception: JNLP not an applet.
JNLPException[category: Launch File Error : Exception: java.lang.Exception: JNLP not an applet : LaunchDesc: 
<jnlp spec="1.0+" codebase="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/">
  <information>
    <title>Earth</title>
    <vendor>earth</vendor>
    <homepage href="null"/>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="background" policy="always"/>
  <resources>
    <java href="http://java.sun.com/products/autodl/j2se" version="1.6+"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/Ex.jar" download="eager" main="true"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dcore.jar" download="eager" main="false"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dutils.jar" download="eager" main="false"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/vecmath.jar" download="eager" main="false"/>
    <nativelib href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dutilsDLL.jar" download="eager" main="false"/>
    <nativelib href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dDLL.jar" download="eager" main="false"/>
  </resources>
  <application-desc main-class="HelloJava3D"/>
</jnlp> ]
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: JNLPException[category: Launch File Error : Exception: java.lang.Exception: JNLP not an applet : LaunchDesc: 
<jnlp spec="1.0+" codebase="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/">
  <information>
    <title>Earth</title>
    <vendor>earth</vendor>
    <homepage href="null"/>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="background" policy="always"/>
  <resources>
    <java href="http://java.sun.com/products/autodl/j2se" version="1.6+"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/Ex.jar" download="eager" main="true"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dcore.jar" download="eager" main="false"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dutils.jar" download="eager" main="false"/>
    <jar href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/vecmath.jar" download="eager" main="false"/>
    <nativelib href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dutilsDLL.jar" download="eager" main="false"/>
    <nativelib href="file:/C:/Documents%20and%20Settings/Admin/Рабочий%20стол/Кнопки/j3dDLL.jar" download="eager" main="false"/>
  </resources>
  <application-desc main-class="HelloJava3D"/>
</jnlp> ]



меня смущает строчка:
Код

  <application-desc main-class="HelloJava3D"/>

ведь такого в моём jnlp нет!

при запуске в других браузерах так же пишет, что классы не найдены.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.