我还没有在荒谬的时间里使用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中成功运行。
答案 0 :(得分:0)
(代表OP发布)。
编辑:已解决
用户Nick Ziebert(谢谢)建议的解决方案是卸载并重新安装Java。我试过这个,但我卸载和重新安装的是JDK,而不是JRE。所以这就是我所做的:
使用Java关闭所有程序 - NetBeans,Eclipse,打开小程序,Firefox,您可以命名。重新启动计算机以防万一。
删除名为jre_1.X.X_XXX
的程序文件中的所有 Java目录(出于某种原因我有两个)。不要打扰卸载,他们不会安静地走。注意:单独保留JDK。
重新下载适用于Windows-x64的.exe(离线)Java并正常安装。
重新运行JNLP,它运作良好。
答案 1 :(得分:0)
遇到此问题的任何人都可以查看 rxtxSerial 版本。如果您尝试在 64 位 JRE/JDK 上运行 32 位版本的 rxtx,您会看到类似的错误。
如果您计划使用串行通信所需的 32 位 rxtx,则无论 JDK/JRE 是什么,您都需要安装 x86 版本。否则需要使用 64 位发行版的 dll。
重新安装正确的版本将解决问题,但如果您想节省一些时间,只需检查安装的 java 版本并检查 java version
和 JAVA_HOME
。您的 Java 主页可能是问题所在。