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

StackOverflow https://stackoverflow.com/questions/643264

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

Я был бы очень заинтересован в ответе и здесь. Мое предложение было бы установить .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 Serial Com Port Driver " изменить. -Stosh

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top