【问题标题】:Add dll to java.library.path using maven使用 maven 将 dll 添加到 java.library.path
【发布时间】:2020-05-25 08:33:43
【问题描述】:

我有一个依赖于我希望能够通过 Maven 运行的系统库的程序。我已经很好地配置了程序并且 maven 运行,但是当它必须加载系统库时失败,我使用的是:

static {
  System.loadLibrary("jniortools");
}

Java 抛出这个异常

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniortools in java.library.path

我尝试根据this 问题将此添加到我的pom.xml 中,但这似乎不起作用。

             <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/jniortools.dll</argLine>
                    <environmentVariables>
                        <PATH>${basedir}\..;${java.library.path}</PATH>
                    </environmentVariables>
                </configuration>
            </plugin>

这就是我在外部 jar 中加载的方式

        <dependency>
            <groupId>com.google.ortools</groupId>
            <artifactId>ortools</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/com.google.ortools.jar</systemPath>
        </dependency>

我还能如何做到这一点?

【问题讨论】:

  • -Djava.library.path=${basedir}/src/main/resources/lib/jniortools.dll。我认为您需要传递路径,而不是文件。所以试试-Djava.library.path=${basedir}/src/main/resources/lib/
  • 我得到了与路径而不是文件相同的异常。

标签: java maven or-tools


【解决方案1】:

我不确定这是否是解决问题的正确方法,但我遇到了加载 dll 的不同方法。

所以通过替换

System.loadLibrary("jniortools");

通过

File file = new File("src/main/resources/lib/jniortools.dll");
System.load(file.getAbsolutePath());

我能够加载 dll 并且不需要 maven-surefire-plugin。希望这对将来的任何人都有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2018-12-11
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2012-01-17
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多