我有一张NVida显卡,我想用它来进行严肃的计算。我从NVida webside下载了一个驱动程序并安装了JOCL绑定。我下载了一个演示程序并编译了它。但该程序无法运行,因为:
> Error while loading native library
> "JOCL-linux-x86" with base name "JOCL"
> Operating system name: Linux
> Architecture : i386 Architecture bit
> size: 32 Stack trace from the attempt
> to load the library as a resource:
> java.lang.NullPointerException: No
> resource found with name
> '/lib/libJOCL-linux-x86.so' at
> org.jocl.LibUtils.loadLibraryResource(LibUtils.jav
> a:139) at
> org.jocl.LibUtils.loadLibrary(LibUtils.java:83)
> at org.jocl.CL.<clinit>(CL.java:47) at
> JOCLSample.main(JOCLSample.java:50)
> Stack trace from the attempt to load
> the library as a file:
> java.lang.UnsatisfiedLinkError: no
> JOCL-linux-x86 in java.library.path at
> java.lang.ClassLoader.loadLibrary(ClassLoader.java
> :1681) at
> java.lang.Runtime.loadLibrary0(Runtime.java:840)
> at
> java.lang.System.loadLibrary(System.java:1047)
> at
> org.jocl.LibUtils.loadLibrary(LibUtils.java:93)
> at org.jocl.CL.<clinit>(CL.java:47) at
> JOCLSample.main(JOCLSample.java:50)
> Exception in thread "main"
> java.lang.UnsatisfiedLinkError: Could
> not load the native library at
> org.jocl.LibUtils.loadLibrary(LibUtils.java:117)
> at org.jocl.CL.<clinit>(CL.java:47) at
> JOCLSample.main(JOCLSample.java:50)
试图解决它我做了以下事情:
我很肯定“JOCL-0.1.4d.jar”文件已正确添加到classpath中; /lib/libJOCL-linux-x86_64.so肯定是在这个jar里面
我还从jar中提取了libJOCL-linux-x86_64.so并使用了相应的-Djava.library.path =命令。
libJOCL-linux-x86_64.so库也在我的LD_LIBRARY_PATH上
我还在正确的目录中运行ldconfig来索引这个库
但问题仍然存在
答案 0 :(得分:1)
根据错误消息,您在32位虚拟机中运行此操作,这意味着您需要32位.so
文件(或切换到使用64位JVM)。
请注意,Java通常会从.so
加载java.library.path
个文件(不一定来自LD_LIBRARY_PATH
)。