Java rxtxSerial 64位与32位冲突

时间:2017-02-12 19:38:02

标签: java netbeans dll jnlp rxtx

我还没有在荒谬的时间里使用Java,但是我试图拼凑一个从串口读取Arduino集成的JApplet。到目前为止,它在NetBeans和Eclipse中运行良好,但在构建时,JNLP / JAR / HTML部署绝对拒绝工作。从here(64位版本的RXTX)获得的rxtxSerial.dll存在某种问题。

现在抛出的错误如下:

/server/server/settings.py

现在奇怪的是我的java版本(1.8.0_121)是100%64位。这意味着,由于某种原因,Java无法在64位平台上链接64位.dll。以下是cmd上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 -version

我的所有环境变量和PATH等都已设置,所有文件都在正确的位置,并且项目始终在NetBeans中成功运行。

2 个答案:

答案 0 :(得分:0)

(代表OP发布)

编辑:已解决

用户Nick Ziebert(谢谢)建议的解决方案是卸载并重新安装Java。我试过这个,但我卸载和重新安装的是JDK,而不是JRE。所以这就是我所做的:

  1. 使用Java关闭所有程序 - NetBeans,Eclipse,打开小程序,Firefox,您可以命名。重新启动计算机以防万一。

  2. 删除名为jre_1.X.X_XXX的程序文件中的所有 Java目录(出于某种原因我有两个)。不要打扰卸载,他们不会安静地走。注意:单独保留JDK。

  3. 重新下载适用于Windows-x64的.exe(离线)Java并正常安装。

  4. 重新运行JNLP,它运作良好。

答案 1 :(得分:0)

遇到此问题的任何人都可以查看 rxtxSerial 版本。如果您尝试在 64 位 JRE/JDK 上运行 32 位版本的 rxtx,您会看到类似的错误。

如果您计划使用串行通信所需的 32 位 rxtx,则无论 JDK/JRE 是什么,您都需要安装 x86 版本。否则需要使用 64 位发行版的 dll。

重新安装正确的版本将解决问题,但如果您想节省一些时间,只需检查安装的 java 版本并检查 java versionJAVA_HOME。您的 Java 主页可能是问题所在。