2014-10-29 105 views
0

我使用jni来调用.so(共享库)。junit4测试原生方法

在执行环境中一切正常。

但我很想在它们上添加一些单元测试。

我具有取决于libUtil_Cade.so

我用maven2.2.1与神火插件,我在pom.xml文件中添加了一个libCBareme.so:

<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 /数据/ tmp目录/ PAM /工作区/ CTR_SCA/OutilsMetier/src目录/测试/资源/ 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,因为它是单元测试,所以我不想依赖于平台。

有人有想法解决这个问题吗?

非常感谢

回答

0

我只是试试这个:

 <configuration> 
      <forkMode>once</forkMode> 
      <workingDirectory>target</workingDirectory> 
      <environmentVariables> 
       <LD_LIBRARY_PATH>${project.basedir}/src/test/resources/om_lib/</LD_LIBRARY_PATH> 
      </environmentVariables> 
    </configuration> 

,它似乎工作!

但它不工作的窗口,我知道我需要通过PATH这样的替换LD_LIBRARY_PATH:

<configuration> 
      <forkMode>once</forkMode> 
      <workingDirectory>target</workingDirectory> 
      <environmentVariables> 
       <PATH>${project.basedir}/src/test/resources/om_lib/</PATH> 
      </environmentVariables> 
    </configuration> 

在调试模式下,我看到 设置环境变量[路径] = [d:\马可波罗\ SVN \ CASTOR_trunk \ CTR_SCA \ OutilsMetier .. \ OM_LIB_DLL]

,但我把的System.out.println看到我的java.library.path和我的路径是不是在linux下:(

确实有人喜欢添加有没有发现这个问题?

我发表它作为答案,如果它可以帮助