java - java.lang.UnsatisfiedLinkError:java.library.path 中没有 TaSESDK
问题描述
我有一个 TaSESDK.so
Dockerfile
FROM java:8
ADD app.jar /app.jar
ADD TaSESDK.so /javaLib/TaSESDK.so
EXPOSE 8080
ENTRYPOINT ["sh","-c","java -jar -Djava.library.path=/javaLib /app.jar"]
当我记录 java.library.path 它打印“/javaLib”
但仍然找不到图书馆
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[12:23:38:316] [ERROR] - org.springframework.boot.SpringApplication.reportFailure(SpringApplication.java:826) - Application run failed
java.lang.UnsatisfiedLinkError: no TaSESDK in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[?:1.8.0_111]
at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_111]
at java.lang.System.loadLibrary(System.java:1122) ~[?:1.8.0_111]
at com.newland.rentalroom.listener.TaSESDKCommandLineRunner.run(TaSESDKCommandLineRunner.java:49) ~[classes!/:1.0-SNAPSHOT]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) [spring-boot-2.2.7.RELEASE.jar!/:2.2.7.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) [spring-boot-2.2.7.RELEASE.jar!/:2.2.7.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) [spring-boot-2.2.7.RELEASE.jar!/:2.2.7.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.7.RELEASE.jar!/:2.2.7.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.7.RELEASE.jar!/:2.2.7.RELEASE]
at com.newland.rentalroom.AppApplication.main(AppApplication.java:16) [classes!/:1.0-SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [app.jar:1.0-SNAPSHOT]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [app.jar:1.0-SNAPSHOT]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [app.jar:1.0-SNAPSHOT]
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597) [app.jar:1.0-SNAPSHOT]
解决方案
我喜欢这个问题
加载库
System.loadLibrary("TaSESDK");
我从不更改此代码在 Windows 中成功运行但在 linux docker 中失败
javaLib
|-->TaSESDK.so
|-->TaSESDK.dll
问题是 libTaSESDK.so
|-->javaLib
|-->TaSESDK.dll
|-->libTaSESDK.so
在linux中必须添加lib前缀
推荐阅读
- python - 我怎样才能简化代码?
- javascript - 如何在 Javascript 中序列化和反序列化 XMLDocument?
- java - 使用带有 JTA @Transactional 的自定义拦截器 (quarkus-narayana-jta)
- machine-learning - 最大Poseriori导数
- sql - 如何根据条件获得不同的行
- c# - 将不同的具体类型映射到接口集合
- reactjs - ReactJs 包
- android - 如何从 SQLite 数据库中获取数据并在 EditText 中显示
- python - django中基于角色实现访问控制
- mp4 - CEF(Chromium 嵌入式框架)不播放 mp4 视频