Java rxtxSerial 64-битный и 32-битный конфликт
Я не использовал Java в смехотворное количество времени, но я пытаюсь собрать воедино JApplet, который читает из последовательного порта для интеграции Arduino. Пока что он отлично работает в NetBeans и в Eclipse, но после сборки развертывание JNLP/JAR/HTML абсолютно отказывается работать. Полученная отсюда rxtxSerial.dll (64-битная версия RXTX) имеет какую-то проблему.
Прямо сейчас выдается следующая ошибка:
java.lang.UnsatisfiedLinkError: C:\Users\Scott\Documents\_School\SYSC_4917\sensor\dist\rxtxSerial.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sensor.Sensor.init(Sensor.java:134)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Теперь странно то, что моя версия Java (1.8.0_121) на 100% 64-битная. Это означает, что по какой-то причине Java не может связать 64-битный.dll на 64-битной платформе. Вот вывод из java -version
на cmd, если это поможет:
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Все мои переменные среды, PATH и т. Д. Установлены, все файлы находятся в нужном месте, и проект всегда успешно выполняется в NetBeans.
2 ответа
(Опубликовано от имени ОП).
РЕДАКТИРОВАТЬ: РЕШЕНО
Решение, предложенное пользователем Nick Ziebert (спасибо), состояло в том, чтобы удалить и переустановить Java. Я пытался это сделать, но то, что я удалял и переустанавливал, было JDK, а не JRE. Итак, вот что я сделал:
Закройте все программы, использующие Java - NetBeans, Eclipse, откройте апплеты, Firefox, назовите его. Перезагрузите компьютер на всякий случай.
Удалить все каталоги Java в программных файлах под названием
jre_1.X.X_XXX
(У меня было два по какой-то причине). Не беспокойтесь об удалении, они не будут идти спокойно. Примечание: оставьте JDK в покое.Повторно загрузите.exe (Offline) Java для Windows-x64 и установите его как обычно.
Перезапустите JNLP, и это сработало.
Любой, кто сталкивается с этой проблемой, проверяет версию rxtxSerial. Если вы попытаетесь запустить 32-битную версию rxtx на 64-битной JRE/JDK, вы увидите аналогичную ошибку.
Независимо от JDK/JRE вам необходимо установить версию x86, если вы планируете использовать 32-битный rxtx, необходимый для последовательной связи. В противном случае вам нужно использовать 64-битный дистрибутив dll.
Повторная установка правильной версии решит проблему, но если вы хотите сэкономить время, просто проверьте, какие версии java установлены, и проверьте