我必须使用两个本地库:一个是我自己的,另一个是第三方.只要我在单独的项目中使用它们,一切都很好.但现在我得到了Exception Ljava/lang/UnsatisfiedLinkError.
我正在使用Eclipse.
我发现如果我将现有的库放在libs/armeabi中,Eclipse就会开始编译本机代码并且它会失败.如果我从命令行重建JNI部分,编译成功但第三方库消失.真的很蠢.
那么我如何告诉Eclipse使用现有的.so库以及必须构建的库?图书馆是独立的.
我目前正在开发一个Play 2.1项目,其中对Web服务的请求将处理下载用户提供的图像,重新调整大小和重新裁剪它们,以及过滤掉已知的坏照片(例如,我们不希望用户上传公司徽标).我们正在尝试使用OpenCV来处理后端工作,但我似乎无法让IntelliJ以与java项目一起使用的方式添加OpenCV jar.
我已经能够从源代码构建OpenCV,没有问题.这给我留下了以下文件夹:/ home/charles/opencv/release
在这个文件夹里面,我有三个感兴趣的文件:
如果我尝试将jar文件添加到IntelliJ作为新的Java库,它似乎找到了所有的类/方法,我可以使用auto-complete编写代码.我也可以单击相应的类或方法,它会将我带到正确的文件中.
但是,当我尝试运行Play项目时,我收到此错误:
[info] Loading project definition from /home/charles/Github/ImageProject
[info] Set current project to ImageProject (in build file:/home/charles/Github/ImageProject/)
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
Server started, use Alt+D to stop
[info] Compiling 1 Java source to /home/charles/Github/ImageProject/target/scala-2.10/classes...
[error] /home/charles/Github/ImageProject/app/controllers/Application.java:7: error: package org.opencv.core does not exist
[error] import org.opencv.core.Core;
[error] ^
Run Code Online (Sandbox Code Playgroud)
我也尝试将jar文件的副本直接添加到项目中(所以将opencv-246.jar放入ImageProject/lib),然后从该位置添加java库.但这只是让我有一个不同的错误:
java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
Run Code Online (Sandbox Code Playgroud)
我怀疑部分问题可能与Java OpenCV包装器使用的本机库有关(上面的文件2或3).在Eclipse中,当您添加jar文件时,您可以显式设置本机库位置,这使OpenCV正常工作.我已经阅读了使用它来解决问题的建议:
-Djava.library.path=/home/charles/opencv/release/lib …Run Code Online (Sandbox Code Playgroud) java opencv intellij-idea unsatisfiedlinkerror playframework-2.1
我正在开发一个将使用Myo臂章的Android应用程序.我希望将其作为辅助功能服务来实现,以便臂带检测到的手势可以,例如导航回家等.
我正在尝试初始化集线器,但应用程序因以下错误堆栈而停止:
01-06 23:42:41.222 11979-11979/eu.miko.myoid E/AndroidRuntime: FATAL EXCEPTION: main
Process: eu.miko.myoid, PID: 11979
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/eu.miko.myoid-1/base.apk"],nativeLibraryDirectories=[/data/app/eu.miko.myoid-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libgesture-classifier.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at com.thalmic.myo.scanner.Scanner.<clinit>(Scanner.java:31)
at com.thalmic.myo.Hub.init(Hub.java:201)
at eu.miko.myoid.MyoidAccessibilityService.onCreate(MyoidAccessibilityService.java:21)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2877)
at android.app.ActivityThread.-wrap4(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1427)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Run Code Online (Sandbox Code Playgroud)
根据Myo文档,这是我用于集线器初始化的代码.我已经尝试将它放在辅助功能服务的onCreate和onServiceConnected方法中,无论如何都会出现错误.
Hub hub = Hub.getInstance();
if (hub.init(this, getPackageName())) {
Intent intent = new Intent(this, ScanActivity.class);
startActivity(intent);
hub.setLockingPolicy(Hub.LockingPolicy.NONE);
hub.addListener(mListener);
}
else {
Log.e(TAG, "Could not initialize the Hub."); …Run Code Online (Sandbox Code Playgroud) 我在 eclipse 中有一个项目,当我单击“运行”时,它在 ide 中运行得很好,但我需要将其导出到可运行的 jar 文件中,该文件也可以正常运行。但是当我尝试运行它时,它会抛出异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
at java.security.AccessController.doPrivileged(Native Method)
at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299)
at javax.media.j3d.GraphicsConfigTemplate3D.getBestConfiguration(GraphicsConfigTemplate3D.java:321)
at java.awt.GraphicsDevice.getBestConfiguration(GraphicsDevice.java:207)
at com.sun.j3d.exp.swing.JCanvas3D.<init>(JCanvas3D.java:228)
at com.sun.j3d.exp.swing.JCanvas3D.<init>(JCanvas3D.java:178)
at mainproject.MainPanel.<init>(MainPanel.java:72)
at mainproject.MainWindow.<init>(MainWindow.java:42)
at mainproject.MainWindow.main(MainWindow.java:23)
Run Code Online (Sandbox Code Playgroud)
我已经用谷歌搜索了两天了,有很多结果,但没有任何帮助。我通过转到导出它file->export->java->Runnable jar file->i bubble extract required libraries into generated jar,选择正确的配置,将文件保存在指定的文件夹中,然后保存就可以了。或者至少我是这么认为的。转到java.library.path,jre lib folder但是当我在 eclipse 中运行它时,它转到 j3d 的 .so ,我尝试使用更改它System.setProperty但没有成功。我有一种感觉,这就是问题所在,但当我尝试解决它时,什么也没发生。我正在使用最新的java3d library (1.5.2 I believe) …
我正在尝试初始化 VLCJ 以执行一些流式传输,作为我正在开发的应用程序的一部分。按照官方教程,我使用以下代码来尝试加载库:
NativeLibrary.addSearchPath(
RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC/Contents/MacOS/lib"
);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'vlc': JNA native support (darwin/libvlc.dylib) not found in resource path (/Users/iamparker/Documents/workspace/VLCStreamer/target/classes:/usr/jar/vlc/vlcj-3.0.1-javadoc.jar:/usr/jar/vlc/vlcj-3.0.1-sources.jar:/usr/jar/vlc/vlcj-3.0.1-test-sources.jar:/usr/jar/vlc/vlcj-3.0.1-tests.jar:/usr/jar/vlc/vlcj-3.0.1.jar:/usr/jar/vlc/jna-4.1.0.jar:/usr/jar/vlc/jna-platform-4.1.0.jar)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:220)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:322)
at com.sun.jna.Library$Handler.<init>(Library.java:142)
at com.sun.jna.Native.loadLibrary(Native.java:387)
at com.sun.jna.Native.loadLibrary(Native.java:366)
at com.thundercats.vlcstreamer.Main.loadNative(Main.java:33)
at com.thundercats.vlcstreamer.Main.main(Main.java:16)
Run Code Online (Sandbox Code Playgroud)
看起来它甚至没有搜索我给它的路径。该目录中有一个非常好的 libvlc.dylib 。
以下是运行 VLCJ NativeDiscoveryTest 的输出:
vlcj: (Info.java:70) | INFO | vlcj: <version not available>
vlcj: (Info.java:71) | INFO | java: 1.6.0_65 Apple Inc.
vlcj: (Info.java:72) | INFO | java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
vlcj: …Run Code Online (Sandbox Code Playgroud) Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.lwjgl.Sys$1.run(Sys.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:95)
at org.lwjgl.Sys.<clinit>(Sys.java:112)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at org.lorana.client.Lorana.<init>(Lorana.java:20)
at org.lorana.client.Lorana.main(Lorana.java:31)
Run Code Online (Sandbox Code Playgroud)
在我将所有本机库链接到每个引用的库并按照http://ninjacave.com/lwjglwitheclipse的说明进行操作后,错误仍然存在
我还关注了板上关于 lwjgl unsatisfiedlinkerrors 的其他问题,但无济于事。
非常感谢您的帮助,提前致谢!
起初这看起来像9个其他问题的副本,但我的实际上是独一无二的.并没有多少答案修复它.使用JLWGL.
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.lwjgl.DefaultSysImplementation.getPointerSize()I
at org.lwjgl.DefaultSysImplementation.getPointerSize(Native Method)
at org.lwjgl.Sys.<clinit>(Sys.java:113)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at renderEngine.DisplayManager.createDisplay(DisplayManager.java:30)
at engineTester.MainGameLoop.main(MainGameLoop.java:11)
Run Code Online (Sandbox Code Playgroud)
没有任何谷歌搜索显示原因.我已经按照几个教程来写了这封信.本机文件夹已正确设置.是的,我仍然得到这个错误!太令人沮丧!
从Ubuntu操作系统上的java类加载共享库(JNI)时遇到问题
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/ETcpsdk/lib/linux-x86_64/libjcryptoki.so: libcryptoki.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:1880)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at tutorialjni.Test.<clinit>(Test.java:7)
Run Code Online (Sandbox Code Playgroud)
- Test.java
package tutorialjni;
public class Test {
// Load an external library, called "jcryptoki"
static {
System.loadLibrary("jcryptoki");
}
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
}
}
Run Code Online (Sandbox Code Playgroud)
- LD_LIBRARY_PATH已在/ etc/environment中分配
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/opt/jdk1.7.0_75"
LD_LIBRARY_PATH="/opt/ETcpsdk/lib/linux-x86_64:/opt/ETcpsdk/lib/"
Run Code Online (Sandbox Code Playgroud)
我拥有ETcpsdk文件夹.
libcryptoki.so放入/opt/ETcpsdk/lib/linux-x86_64/libcryptoki.so
运行文件libcryptoki.so命令
libjcryptoki.so:ELF 64位LSB共享对象,x86-64,版本1(SYSV),动态链接,未剥离
- JDK版本:
java version "1.7.0_75" …Run Code Online (Sandbox Code Playgroud) java ubuntu java-native-interface shared-libraries unsatisfiedlinkerror
我有一个来自 Oracle 表的数据帧,我试图在本地使用 Snappy 压缩将其写入 Parquet 格式。
如果我保存为 CSV,则工作正常,但在尝试保存为 Parquet 时会遇到此错误。
java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I
Run Code Online (Sandbox Code Playgroud)
Snappy 库已经在我的类路径中,这适用于其他源类型(平面文件)。
我可以做什么来解决?
堆栈跟踪如下:
2017-05-19 08:10:37.398 INFO 7740 --- [rker for task 0] org.apache.hadoop.io.compress.CodecPool : Got brand-new compressor [.snappy]
2017-05-19 08:11:45.482 ERROR 7740 --- [rker for task 0] org.apache.spark.util.Utils : Aborting task
java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I
at org.xerial.snappy.SnappyNative.maxCompressedLength(Native Method) ~[snappy-java-1.1.2.6.jar:na]
at org.xerial.snappy.Snappy.maxCompressedLength(Snappy.java:376) ~[snappy-java-1.1.2.6.jar:na]
at org.apache.parquet.hadoop.codec.SnappyCompressor.compress(SnappyCompressor.java:67) ~[parquet-hadoop-1.8.1.jar:1.8.1]
at org.apache.hadoop.io.compress.CompressorStream.compress(CompressorStream.java:81) ~[hadoop-common-2.2.0.jar:na]
at org.apache.hadoop.io.compress.CompressorStream.finish(CompressorStream.java:92) ~[hadoop-common-2.2.0.jar:na]
at org.apache.parquet.hadoop.CodecFactory$BytesCompressor.compress(CodecFactory.java:112) ~[parquet-hadoop-1.8.1.jar:1.8.1]
at org.apache.parquet.hadoop.ColumnChunkPageWriteStore$ColumnChunkPageWriter.writePage(ColumnChunkPageWriteStore.java:89) ~[parquet-hadoop-1.8.1.jar:1.8.1]
at org.apache.parquet.column.impl.ColumnWriterV1.writePage(ColumnWriterV1.java:152) ~[parquet-column-1.8.1.jar:1.8.1]
at org.apache.parquet.column.impl.ColumnWriterV1.accountForValueWritten(ColumnWriterV1.java:113) ~[parquet-column-1.8.1.jar:1.8.1]
at org.apache.parquet.column.impl.ColumnWriterV1.write(ColumnWriterV1.java:205) ~[parquet-column-1.8.1.jar:1.8.1]
at org.apache.parquet.io.MessageColumnIO$MessageColumnIORecordConsumer.addBinary(MessageColumnIO.java:347) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Windows 中的 docker 工具箱运行自定义 java swing GUI。我现在想容器化此应用程序,但出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/opt/jdk1.8.0_202/jre
/lib/amd64/libawt_xawt.so: libXext.so.6: cannot open shared object file:
No such file or directory
Run Code Online (Sandbox Code Playgroud)
我正在运行一个 dockerfile。设置是:
1)安装Linux
2)安装JDK
3)复制包含JAR的文件夹
4) 运行 docker 容器,这将打开 GUI(不是 Linux 前端,最好不使用 vnc)。
我在 Windows 上使用Xlaunch作为终端,并且能够使用它在 docker 上启动 Firefox。
FROM anapsix/alpine-java
COPY ./myJarFolder /home/myJarFolder
CMD ["java","-jar","/home/myJarFolder/myJarFile.jar"]
Run Code Online (Sandbox Code Playgroud)
FROM alpine:3.2
MAINTAINER Anastas Dancha [...]
# Install cURL
RUN apk --no-cache add ca-certificates
# Java Version
ENV JAVA_VERSION_MAJOR 8
ENV JAVA_VERSION_MINOR …Run Code Online (Sandbox Code Playgroud)