如何将DLL文件指定为Maven运行时的依赖项



运行测试用例(使用MVN测试)时,我的测试用例失败;因为我在内部使用的一个库中调用了一个dll文件。我的测试用例失败了,说该文件不在Java库路径中。以下是我的POM文件和测试输出(来自MVN测试)。我将dll文件复制到src/test/资源,但没有帮助

<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${artifactId}-${version}</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<!--  <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> -->
<testSourceDirectory>src/test</testSourceDirectory>
<resources>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
</resources>
<testResources>
  <testResource>
    <directory>src/test/resources</directory>
  </testResource>
</testResources>
 <pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.16</version>
    </plugin>
  </plugins>
</pluginManagement>


t e s t s

1 [main] DEBUG Sigar  - no sigar-amd64-winnt.dll in java.library.path
 org.hyperic.sigar.SigarException: no sigar-amd64-winnt.dll in java.library.path
    at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
    at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
    at org.hyperic.sigar.cmd.Shell.<init>(Shell.java:50)
    at org.hyperic.sigar.cmd.SigarCommandBase.<init>(SigarCommandBase.java:75)
    at com.harmonia.cbm.dataaquisition.pal.CpuInfoTest.<init>(CpuInfoTest.java:41)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:357)
    at java.lang.Class.newInstance(Class.java:310)
    at org.apache.maven.surefire.junit.PojoTestSet.<init>(PojoTestSet.java:63)
    at    rg.apache.maven.surefire.junit.JUnit3Provider.createTestSet(JUnit3Provider.java:117)
    at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(Fork
  edBooter.java:153)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

基本上需要将dll文件的路径放在Windows的%PATH%变量中,或者使用Maven的Surefire插件明确设置它,因为您在测试阶段中遇到了此错误。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

最新更新