【问题标题】:Maven - UnsatisfiedLinkError with java.library.pathMaven - 带有 java.library.path 的 UnsatisfiedLinkError
【发布时间】:2014-07-04 17:31:38
【问题描述】:

我在尝试让 Maven 加载我的本机库时遇到问题。目前,我将我的库文件 (.so) 放在 src/main/resources/ 中,它给了我一个错误,即在 java.library.path 中找不到它。我也尝试将它放在项目的基本目录中,但给了我相同的结果。

下面是我试过的maven插件,但是好像不行。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <systemProperties>
        <property>
          <name>java.library.path</name>
          <value>${project.build.directory}</value>
        </property>
      </systemProperties>
    </configuration>
  </plugin>

如果有帮助,我会直接从 Eclipse 运行我的项目。我知道如何让它在 Eclipse 中工作,但希望它与 maven 一起工作。

@EDIT 我也试过在命令行上运行它,我仍然收到同样的错误

【问题讨论】:

  • 我知道${project.build.directory} 指向${basedir}/target。您提到.so 被放置在src/main/resources,它将被复制到${project.build.directory}/classes (${basedir}/target/classes)。
  • 但是当我看罐子时,它在底部
  • 是的,你是对的。生成的 jar 文件在基本级别包含该资源。但万无一失的是在那之前执行的。阶段测试在阶段包之前。请参考maven.apache.org/guides/introduction/…
  • 有没有办法指向罐子里的那个?或者 jar 中的文件夹,比如 lib/?
  • 我以前只是指向dll/so的全路径,明白不能指向jar文件。请看stackoverflow.com/questions/4691095/…

标签: maven java-native-interface


【解决方案1】:

我在我的项目中做了以下事情:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
        <argLine>-Djava.library.path=/path/to/your/libs:${java.library.path}</argLine>
        </configuration>
    </plugin>
</plugins>

它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多