我正在尝试设置一个使用 Java 和 OpenCL 的程序。我为此使用 JOCL 的绑定(bind)。这是我从 Ant 构建时遇到的错误:
Error while loading native library "JOCL-linux-x86_64" with base name "JOCL"
Operating system name: Linux
Architecture : amd64
Architecture bit size: 64
Stack trace:
java.lang.UnsatisfiedLinkError: no JOCL-linux-x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
...
...
这是我的 .bashrc 设置:
export PATH=.:/bin:/usr/bin:/usr/local/bin://home/djkashta/Desktop/bp-trunk/app/BlueprintCore/scripts:/usr/java/jdk1.6.0_23/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/lib:/usr/local/lib:/usr/local/cuda/computeprof/bin:/home/djkashta/Desktop/bp-trunk/bundles/CopperShark/native/linux/2.6.28/x86_64/:/usr/java:/usr/java/jdk1.6.0_23/bin/java:/usr/java/jdk1.6.0_23:/usr/java/jdk1.6.0_23/bin:/usr/lib/jvm
export LD_PRELOAD=/usr/java/jdk1.6.0_23/jre/lib/amd64/libjsig.so
export JDK_HOME=/usr/java/jdk1.6.0_23
export JAVA_HOME=/usr/java/jdk1.6.0_23
export ANT_HOME=/opt/apache-ant-1.7.1
我不明白为什么我会遇到这个问题。我在我的 Ubuntu 机器上没有得到这个,它的设置就像这台 RedHat 机器一样。 libJOCL-linux-x86_64.so
存在于 LD_LIBRARY_PATH
之一中。如果我执行哪个 Java,我会得到: /usr/java/jdk1.6.0_23/bin/java
有什么想法吗?我被困住了...
最佳答案
LD_LIBRARY_PATH 和 java.library.path 并不相同,尽管它们很相似。在命令行上将 -Djava.library.path 设置为您的库所在的位置。
或者,甚至 - System.out.println(System.getProperty("java.library.path")) 在加载库之前 - 看看它认为路径是什么......
关于java.lang.UnsatisfiedLinkError,我无法解决它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662106/