maven-surefire-plugin,DLLs和java.library.path

Xor*_*rty 17 maven

我有一个Maven依赖项,需要在运行时使用DLL.我想要做的是简单地在resources/lib文件夹中包含该DLL 并将其DLL放在target目录中.所以我做的是:

  1. 添加了DLL src/main/resources/lib
  2. 修改pom.xml为使用参数-Djava.library.path = $ {basedir}/lib,如下所示:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <forkMode>once</forkMode>
            <workingDirectory>target</workingDirectory>
            <argLine>-Djava.library.path=${basedir}/lib</argLine>
        </configuration>
    </plugin>
    
    Run Code Online (Sandbox Code Playgroud)

但是我仍然遇到java.library.path中不存在DLL的运行时错误.

car*_*ing 15

你的<argLine/>指向错误的路径.试试这个:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <forkMode>once</forkMode>
        <workingDirectory>target</workingDirectory>
        <argLine>-Djava.library.path=${basedir}/src/main/resources/lib</argLine>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

如果这个DLL只用于测试,你应该把它放在src/test/resources.在这种情况下,<argLine/>路径将变为${project.build.directory}/test-classes.

  • 不幸的是,没有帮助.当我检查路径的值,如"System.getProperty("java.library.path");" 我仍然无法看到所需的DLL.还有什么想法吗? (2认同)