【发布时间】:2014-10-29 13:45:17
【问题描述】:
我使用 jni 调用 .so(共享库)。
在执行环境中一切正常。
但我想对它们添加一些单元测试。
我有一个依赖于 libUtil_Cade.so 的 libCBareme.so
我使用带有surefire插件的maven2.2.1,并在pom.xml文件中添加:
<configuration>
<forkMode>once</forkMode>
<workingDirectory>target</workingDirectory>
<argLine>-Djava.library.path=${project.basedir}/src/test/resources/om_lib/</argLine>
</configuration>
我添加了 System.out.println(System.getProperty("java.library.path"));并且路径没问题,您可以在下一个日志中看到。
但是当我启动测试时,我得到:
TrtBaremeTest Time elapsed: 3.032 sec <<< ERROR!
java.lang.UnsatisfiedLinkError: /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libCBareme.so: libUtil_CADE.so: cannot open shared object file: No such file or directory
在这个目录中我有
ls /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/*.so /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libCBareme.so /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libUtil_CADE.so
为什么我的单元测试说cannot open shared object file?
我不会在 %JAVA_HOME%\bin 中添加 .so,因为它是单元测试,所以我不想依赖于平台。
有人有办法解决这个问题吗?
非常感谢
【问题讨论】:
标签: java-native-interface native java.library.path