我使用 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 /数据/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libUtil_CADE.so
为什么我的单元测试说cannot open shared object file
?
我不会在 %JAVA_HOME%\bin 中添加 .so ,因为它是单元测试,所以我不想依赖于平台。
有人有解决这个问题的想法吗?
多谢