开源改变世界!!

Serial UnsatisfiedLinkError(缺少依赖项???) #524

推推 grbl 2年前 (2023-01-26) 107次浏览
关闭
jobongo 打开了这个问题 2016 年 11 月 2 日 · 11 条评论
关闭

Serial UnsatisfiedLinkError(缺少依赖项???)#524

jobongo 打开了这个问题 2016 年 11 月 2 日 · 11 条评论

注释

Serial UnsatisfiedLinkError(缺少依赖项???) #524

我正在尝试在基于 arm 的板(运行 Debian Mate 的 Pine 64)上安装 UGS 平台,并继续运行并发布 jssc。我已经在 RPi 3 上安装了平台并且它可以工作(某种程度上,可视化工具没有问题)。在 Pine64 上出现以下错误

java.lang.UnsatisfiedLinkError: jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J at jssc.SerialNativeInterface.openPort(Native Method) at jssc.SerialPortList.getUnixBasedPortNames(SerialPortList.java:333) at jssc.SerialPortList.getPortNames(SerialPortList.java:296) at jssc.SerialPortList.getPortNames(SerialPortList.java:178) at com.willwinder.universalgcodesender.utils.CommUtils.getSerialPortList(CommUtils.java:45) at com.willwinder.ugs.nbp.core.connection.PortComboBox.initComboBox(PortComboBox.java:53) at com.willwinder.ugs.nbp.core.connection.ComboWithPreferences.<init>(ComboWithPreferences.java:87) at com.willwinder.ugs.nbp.core.connection.PortComboBox.<init>(PortComboBox.java:45) at com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox$MyToolbarPresenter.initComponents(SerialPortToolbarBox.java:103) at com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox$MyToolbarPresenter.<init>(SerialPortToolbarBox.java:83) at com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox.getToolbarPresenter(SerialPortToolbarBox.java:66) at org.openide.awt.Toolbar$Folder.createInstance(Toolbar.java:443) at org.openide.loaders.FolderInstance.defaultProcessObjectsFinal(FolderInstance.java:888) at org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:730) at org.openide.util.Task.run(Task.java:257) [catch] at org.netbeans.modules.openide.loaders.AWTTask.run(AWTTask.java:79) at org.netbeans.modules.openide.loaders.AWTTask$Processor.run(AWTTask.java:172) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我感觉我在 Pine64 上使用的发行版中缺少一些依赖项。UGS 打开,但串行端口选择和可视化工具不可见。

UGSPlatform 在桌面 Ubunutu 和 Ubuntumate for RPi 上运行良好,但我似乎无法让它在 Pine64 上与 Ubuntu Mate 一起工作。我正在使用 openjdk 1.8。我有串口权限。我缺少一些东西。

顺便说一句,在 Windows 和 Ubuntu GRBL CNC 机器上运行良好。我正在尝试创建一个“独立的”CNC,这个软件似乎是最好的解决方案。谢谢。

Serial UnsatisfiedLinkError(缺少依赖项???) #524
所有者

听起来我用于 Serial (jssc) 和 OpenGL (jogl) 的库
不支持您的硬件,至少不支持我使用它们的方式。

arduino IDE(也使用 jssc)是否连接到您的 arduino?

在 2016 年 11 月 1 日星期二,jobongo notifications@github.com写道:

我正在尝试在基于 arm 的板(
运行 Debian Mate 的 Pine 64)上安装 UGS 平台,并继续运行并发布 jssc。我已经
在 RPi 3 上安装了该平台并且它可以工作(某种程度上,可视化工具
没有问题)。在 Pine64 上出现以下错误

java.lang.UnsatisfiedLinkError: jssc.SerialNativeInterface.openPort(Ljava/lang/String;Z)J
at jssc.SerialNativeInterface.openPort(Native Method) at
jssc.SerialPortList.getUnixBasedPortNames(SerialPortList.java:333) at
jssc.SerialPortList.getPortNames (SerialPortList.java:296) 在
jssc.SerialPortList.getPortNames(SerialPortList.java:178) 在
com.willwinder.universalgcodesender.utils.CommUtils.getSerialPortList(CommUtils.java:45)
在 com.willwinder.ugs.nbp.core。连接.PortComboBox。
com.willwinder.ugs.nbp.core 上的 initComboBox(PortComboBox.java:53)。
connection.ComboWithPreferences.(ComboWithPreferences.java:87) 在
com.willwinder.ugs.nbp.core.connection.PortComboBox.(PortComboBox.java:45)
在 com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox$
MyToolbarPresenter.initComponents(SerialPortToolbarBox.java:103) 在
com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox$
MyToolbarPresenter.(SerialPortToolbarBox.java:83)
com.willwinder.ugs.nbp.core.toolbars.SerialPortToolbarBox。
getToolbarPresenter(SerialPortToolbarBox.java:66) 在
org.openide.awt.Toolbar$Folder.createInstance(Toolbar.java:443) 在
org.openide.loaders.FolderInstance.defaultProcessObjectsFinal(FolderInstance.java:888)
在 org.openide.loaders .FolderInstance$1R.run(FolderInstance.java:730) 在
org.openide.util.Task.run(Task.java:257) [catch] 在
org.netbeans.modules.openide.loaders.AWTTask.run(AWTTask. java:79) 在
org.netbeans.modules.openide.loaders.AWTTask$Processor.run(AWTTask.java:172)
在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 在
java.awt.EventQueue.dispatchEventImpl(EventQueue. java:756) 在
java.awt.EventQueue.access$500(EventQueue.java:97) 在
java.awt.EventQueue$3.run(EventQueue.java:709) 在
java.awt.EventQueue$3.run(EventQueue.java: 703)在java.security。
java.security 中的 AccessController.doPrivileged(本机方法)。
ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
在 java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 在
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
在 java.awt。 EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我感觉我在 Pine64 上使用的发行版中缺少一些依赖项。UGS 打开,但串行端口选择和
可视化工具不可见。

UGSPlatform 在桌面 Ubunutu 和 Ubuntumate for RPi 上运行良好,但我
似乎无法让它在 Pine64 上与 Ubuntu Mate 一起工作。我正在使用
openjdk 1.8。我有串口权限。我
缺少一些东西。

顺便说一句,在 Windows 和 Ubuntu GRBL CNC 机器上运行良好。我正在尝试
创建一个“独立的”CNC,这个软件似乎是最好的解决方案。
谢谢。


您收到此消息是因为您订阅了此线程。
直接回复此电子邮件,在 GitHub
#524
上查看它,或 将线程静音
https://github.com/notifications/unsubscribe-auth/AAHqRWanONZyBpyBdWcDUtqdOIMD5Rcbks5q56d3gaJpZM4Kmkbm

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者

Arduino 已连接,我可以很好地发送 GRBL 命令。似乎 UGS 为 TTYACM0 创建了一个锁定文件,因为我得到一个锁定文件已经存在的错误….

Serial UnsatisfiedLinkError(缺少依赖项???) #524
所有者

您使用的是什么版本的 UGS?如果您还没有,可以尝试
每晚构建吗?

在 2016 年 11 月 1 日星期二,jobongo notifications@github.com写道:

Arduino 已连接,我可以很好地发送 GRBL 命令。似乎 UGS
为 TTYACM0 创建了一个锁定文件,因为我得到一个锁定
文件已经存在的错误….


你收到这个是因为你发表了评论。
直接回复此电子邮件,在 GitHub
#524(评论)上查看,
或将线程静音
https://github.com/notifications/unsubscribe-auth/AAHqRXIqOwwju0dwqM6ObVPZENU1XVZuks5q5691gaJpZM4Kmkbm

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者
乔邦戈 评论了 2016 年 11 月 2 日  

我正在使用 2.0 版(平台构建)。老实说,我还没有尝试过以前的版本(0.9、0.8 等)。我已经尝试过 v2.0 的夜间构建和稳定版(我假设它是稳定版)。两者都给我同样的错误。我喜欢 v2.0 的外观和设计。我将尝试刚刚发布的最新一晚。

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者

我想我找到了一个可能的原因。Pine64 CPU 架构是 arm64 而 RPi 是 ARM-HF。在 jssc SerialNativeInterface 类中,它不检查 arm64 体系结构,只有 armhf 和 armsf(soft-float 和 hard-float)和或 x86/64 然后加载正确的共享对象(.so)(我对 Java 知之甚少,但据我所知,这就是发生的事情)。

我找到了一个支持 arm64 的 JSSC 版本,但是由于 UGS 不是用它编译的,有没有办法用 jssc arm64 中的 Java 类替换 Java 类?我搜索了被调用的 jssc 类,但似乎找不到正确的类。我唯一能找到它们的地方是位于 jssc.jar 中

ugsplatform/modules/ext/com.willwinder.ugs-platform-ugslib/org-scream3r/

但改变这些课程似乎没有影响。我什至删除了这个 jar 并得到了同样的错误。这些类是否可以放在不同的 jar 或其他地方?谢谢。

Serial UnsatisfiedLinkError(缺少依赖项???) #524
所有者

你在哪里找到 arm64 的 JSSC 版本?如果人们正在使用具有更广泛平台支持的构建,我应该切换到它。

这些库的问题在于 java 环境没有内置库,因此它们需要捆绑一些本机代码。因此,您需要替换类文件并添加本机二进制文件。如果你打开 jar(它们是 zip 文件),你可以添加库文件并更新类文件:
Serial UnsatisfiedLinkError(缺少依赖项???) #524

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者
乔邦戈 评论了 2016 年 11 月 3 日  

我在https://launchpad.net/ubuntu/+source/jssc/2.8.0-1/+build/9880902找到了 jssc arm64 的 deb 包

我试过像你提到的那样更新类文件和库,但我得到了同样的错误。即使删除 jssc.jar,也会出现同样的错误。这让我觉得我找错地方了。

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者

我发现它确实使用了那个罐子。当 UGS 打开时,它会在主目录中创建 .ugs 和 .ugsplatform 目录。那里必须有一些缓存文件定义了以前的状态。当我清除这些目录时,我得到一个与上面不同的 undefinedclasserror。

我找不到包含 arm64 架构的 deb 文件的源代码。我将看看我是否可以修改 SerialNativeInterface 类以包含此体系结构并包含正确的库。

Serial UnsatisfiedLinkError(缺少依赖项???) #524
作者

我设法解决了这个问题。我之前使用了 deb 包(libjssc-2.8.so)中的共享对象并将其复制到/usr/lib/jni/目录中。然后我只是用deb 包中的那个替换了原来的SerialNativeInterface类。ugsplatform/modules/ext/com.willwinder.ugs-platform-ugslib/org-scream3r/清除了主目录中的 ugs* 隐藏文件,我现在可以与我的 CNC 通信了。

我认为修改 SerialNativeInterface 类将不难包含 arm64/aarch64。我开始但真的只是想找到更简单的方法……在 deb arm64 回购中,使用的是版本 2.6,而不是 v 2.8,所以你必须将它包含在你的 jssc.jar 中。