【问题标题】:Exception UnsatisfiedLinkError异常 UnsatisfiedLinkError
【发布时间】:2019-06-04 04:33:41
【问题描述】:

我正在尝试运行我的项目,但我遇到了这个异常,我不知道下一步该做什么。

详情:在这个项目中我需要使用lib.jar,但是这个JAR文件需要.so文件。

编辑

    OpenJDK Server VM warning: You have loaded library /home/david/Retina/ReconocimientoRetina/sdk/libIddk2000jni.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
java.lang.UnsatisfiedLinkError: /home/david/Retina/ReconocimientoRetina/sdk/libIddk2000jni.so: libIddk2000.so: no se puede abrir el archivo del objeto compartido: No existe el archivo o el directorio
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.iritech.iddk.standard.Iddk2000Apis.<clinit>(Iddk2000Apis.java:221)
    at com.iritech.demo.functionCapture.open_device(functionCapture.java:1222)
    at com.iritech.demo.Iddk2000Main.getIris(Iddk2000Main.java:39)
    at com.iritech.demo.Iddk2000Main.main(Iddk2000Main.java:30)
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.iritech.iddk.standard.Iddk2000Apis.getIddkConfigNative(Lcom/iritech/iddk/standard/IddkConfig;)I
    at com.iritech.iddk.standard.Iddk2000Apis.getIddkConfigNative(Native Method)
    at com.iritech.iddk.standard.Iddk2000Apis.getSdkConfig(Iddk2000Apis.java:246)
    at com.iritech.demo.functionCapture.open_device(functionCapture.java:1225)
    at com.iritech.demo.Iddk2000Main.getIris(Iddk2000Main.java:39)
    at com.iritech.demo.Iddk2000Main.main(Iddk2000Main.java:30)

我的图书馆

我有 gnu/linux (ubuntu 64 位)

编辑

在搜索答案后,我找到了这个链接,我需要一个参数 “VM Argument”但是为什么不起作用??

我将本地库放入文件夹 workspace/ReconocimientoRetina/sdk/files.so 中的项目中

【问题讨论】:

  • .so 文件是否在您的 PATH 中?
  • 是的@DanW,我创建了一个库并添加了文件 jar,在这个 jar 中添加了本地库。
  • 看起来本机库是为另一个硬件架构“cabecera ELF inválida(可能的原因:字节序不匹配)”编译的。
  • @Henry 我有 jvm 32 位,我的异常更改为新异常,我编辑我的问题

标签: java unsatisfiedlinkerror


【解决方案1】:

解决方案。

我用这个步骤解决了我的问题

第一

1-添加到 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foobar/lib

2-重建缓存

以 sudo 打开 /etc/ld.so.conf 并在库目录中添加一个新行。在这种情况下,我们添加/opt/foobar/lib.

3- 重新运行 ldconfig 以重建缓存:

sudo ldconfig

4-检查共享库缓存现在是否包含新目录中的共享库:

ldconfig -p

更多信息见本教程 https://codeyarns.com/2014/01/14/how-to-add-library-directory-to-ldconfig-cache/

【讨论】:

    【解决方案2】:

    如果您使用 ECLIPSE 创建一个没有包名的项目(保留默认值)。

    在我使用了观众的所有建议/推荐之后,我尝试了这一点并与我合作。 但是,您需要在 VM -Djava.library.path="c:..."

    处插入环境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2020-07-03
      • 2015-04-24
      • 2012-05-28
      • 2016-10-19
      相关资源
      最近更新 更多