不满意的链接错误runnable jar引用jssc库

时间:2014-02-28 03:22:52

标签: java ubuntu jar unsatisfiedlinkerror beagleboneblack

我们正在创建一个可运行的java jar,以便在beagle bone black上运行(运行ubuntu)。

我们已经创建了一个可运行的jar,它可以在我们的mac和pc(windows)上正常运行但不会在ubuntu系统上运行。运行时我们不断收到以下错误:

    Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
    Caused by: java.lang.UnsatisfiedLinkError: /home/ubuntu/.jssc/linux/libjSSC-2.6_armhf.so: /home/ubuntu/.jssc/linux/libjSSC-2.6_armhf.so: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
        at java.lang.Runtime.load0(Runtime.java:795)
        at java.lang.System.load(System.java:1062)
        at jssc.SerialNativeInterface.<clinit>(SerialNativeInterface.java:172)
        at jssc.SerialPort.<init>(SerialPort.java:118)
        at InputBoard.<init>(InputBoard.java:33)
        at InputBoard.main(InputBoard.java:22)
        ... 5 more

任何信息都将不胜感激。正如我所说,这可以通过基于unix的mac上的终端运行良好,所以它似乎应该适用于Ubuntu。我们不知道为什么它引用/ home / ubuntu目录。如果您需要有关该项目的任何代码信息,请告诉我们,但我认为这不会相关。

3 个答案:

答案 0 :(得分:0)

您缺少本机运行时库。您可以使用apt-get来获取它包含的包来安装此库。为此,请提供此命令。

sudo apt-get install libc6-*

答案 1 :(得分:0)

我在为Arm安装最新的JDK 8 for Hard float时解决了这个问题。以前我尝试了几件事,我尝试使用版本2.6,2.7和2.8,指定LD_LIBRARY_PATH环境。变量,确保库在〜/ .jssc / linux等等所有这些都无济于事,只有在我升级了java之后,它才能完美无缺。

答案 2 :(得分:0)

即使使用最新版本,我也遇到了同样的错误。在我看来,事实证明JSSC正试图使用​​&#34;软浮动&#34;它从.jar文件中复制的本机库的版本。我最终用.jar文件中的硬浮点版本替换了该文件,并删除了对该文件的写入权限。之后一切都开始了。