Динамическая загрузка собственной библиотеки внутри Java-апплета - PullRequest
2 голосов
/ 13 марта 2009

Я пытаюсь написать апплет Java, который будет читать с последовательного порта пользователя. Для этого я использую Java Comm API в сочетании с RXTX библиотекой . Мне удалось прочитать данные через локальное Java-приложение, но я не могу сделать то же самое из апплета. Проблема в том, что библиотека RXTX является нативной библиотекой, и я не нашел способа загрузить эту библиотеку в апплет Java. Я нашел две интересные статьи (Использование JNI в апплетах , которые ссылаются на эту статью ), но обе они старше 10 лет, и мне интересно, есть ли более новое решение. Или, если вы можете предложить альтернативу, я хотел бы услышать это!

Ответы [ 5 ]

3 голосов
/ 05 мая 2009

Использовать Java Web Start. Вы можете включить нативную библиотеку в качестве подписанного фляги, и все должно работать.

1) поместите нативные библиотеки в банку в каталоге ROOT 2) подписать ВСЕ банки 3) написать JNLP, ссылающийся на все jar-файлы (перейдите к поиску того, как писать jnlp)

после этого должно работать

0 голосов
/ 21 апреля 2009

Я был бы очень заинтересован в ответе и здесь. Мое предложение было бы установить .jar и .dll для RXTX в \ program files \ java \ tree. Вы можете установить их в целевой системе, прежде чем пытаться использовать апплет. Мне нравится идея использования Java Web Start. Если вы подпишете апплет, вы не можете читать / писать какие-либо файлы на компьютере? Таким образом, вы можете установить .jar и .dll, а потом использовать их?

Для окон я предлагаю использовать «Windows Java Serial Com Port Driver» вместо rxtx. Вы можете скачать его с http://www.engidea.com/blog/informatica/winjcom/winjcom.html Я обнаружил, что его намного проще устанавливать и использовать, и он намного свободнее от ошибок. Я не смог использовать RXTX с последовательными USB-устройствами, потому что RXTX зависал при отключении USB-порта. winjcom решил эти проблемы для меня и многое другое.

Я все еще пытаюсь решить, как развернуть DLL, но я не потею, потому что не ожидаю, что изменится DLL для «драйвера последовательного порта Windows Java». -Stosh

0 голосов
/ 13 марта 2009

Я не знаю про апплеты, кроме того, что они сильно заблокированы. безопасность / доступ к ресурсам машины и т. д.

Если вам нужно решение для развертывания в Интернете, рассматривали ли вы Java Web Start ? В частности, смотрите FAQ FAQ

0 голосов
/ 13 марта 2009

Честно говоря, пытаться получить доступ к устройствам из Java-апплета - плохая идея, даже если вы можете заставить ее работать, а загрузка динамической библиотеки в обычный апплет - еще хуже; на самом деле, я был бы изумлен, если бы вы могли найти способ обмануть современный браузер. (Учитывайте возможные последствия для безопасности.)

Вам лучше, как предлагалось по другим вопросам, создать приложение, которое можно запустить с помощью Web Start.

0 голосов
/ 13 марта 2009

Во-первых, я бы предложил сделать это в апплете, вероятно, плохая идея.

Если вы все равно продолжите, JNLPAppletLauncher может помочь.

...