【问题标题】:Maven native dependences in EclipseEclipse 中的 Maven 原生依赖
【发布时间】:2012-08-15 07:49:54
【问题描述】:

我正在尝试让一些原生依赖项 (LWJGL) 在 Eclipse (Juno) 中使用 Maven 顺利运行。

目前情况:

  • 我使用的是maven-nativedependencies-plugin 0.0.6 版。这似乎成功地将本机库下载并解压缩到我项目的target/natives 子目录中。到目前为止还不错。
  • 我可以通过在Properties / Java Build Path / Maven Dependencies / Native Library Location / Edit... 中手动添加target/natives 目录来使依赖项工作
  • 但这只是暂时的,因为似乎无法在 pom.xml 中的任何位置指定本机库位置。特别是,每当我执行Maven / Update Project... 时它就会中断,因为本机库位置已被清除(可能是通过 m2e 根据 pom 重新配置项目)
  • 每当清除本机库位置时,我都会收到错误“java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path”

让它可靠工作的最佳方法是什么?

【问题讨论】:

  • 这个链接有帮助吗?将非 JAR 资源放到java.library.path 上有点麻烦:buildanddeploy.com/node/14
  • @Duncan - 谢谢!这是一个有趣的链接,虽然它不是 Eclipse 示例,我认为它不能解决核心问题(即 Eclipse 中的本机库位置空白)

标签: java eclipse maven m2eclipse lwjgl


【解决方案1】:

试试这个步骤;

  • 转到您的 java 项目的运行配置。
  • 打开“参数”选项卡并输入“-Djava.library.path=target/natives” 进入 VM 参数。

对于maven项目;

确保你的 pom.xml 是这样的;

      <build>
            <plugins>
                    <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>2.3.2</version>
                            <configuration>
                                    <source>1.5</source>
                                    <target>1.5</target>
                                    <encoding>UTF-8</encoding>
                            </configuration>
                    </plugin>
                    <plugin>
                            <groupId>com.googlecode.mavennatives</groupId>
                            <artifactId>maven-nativedependencies-plugin</artifactId>
                            <version>0.0.6</version>
                            <executions>
                                    <execution>
                                            <id>unpacknatives</id>
                                            <phase>generate-resources</phase>
                                            <goals>
                                                    <goal>copy</goal>
                                            </goals>
                                    </execution>
                            </executions>
                    </plugin>
                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-jar-plugin</artifactId>
                            <version>2.3.2</version>
                            <configuration>
                                    <archive>
                                            <manifest>
                                                    <mainClass>${main.class}</mainClass>
                                                    <addClasspath>true</addClasspath>
                                                    <classpathPrefix>lib/</classpathPrefix>
                                            </manifest>
                                    </archive>
                            </configuration>
                    </plugin>
                    <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <version>2.2.1</version>
                            <executions>
                                    <execution>
                                            <id>bundle-project-sources</id>
                                            <phase>package</phase>
                                            <goals>
                                                    <goal>single</goal>
                                            </goals>
                                            <configuration>
                                                    <descriptors>
                                                            <descriptor>src/META-INF/assembly.xml</descriptor>
                                                    </descriptors>
                                            </configuration>
                                    </execution>
                            </executions>
                    </plugin>
            </plugins>
    </build> 

然后左键点击eclipse项目,进入maven菜单,点击“更新项目配置”。如果还是有问题,在 Eclipse 控制台选项卡中,打开 maven 控制台并再次执行“更新项目配置”选项

【讨论】:

  • 嗯....这是一次性的,但在 Maven 方面没有帮助 - 例如Native Library Location 仍然是空白的,并且 Maven 在运行测试套件时失败。
  • 10 个月前不需要添加 -Djava.library.path=path/to/dir,我今天重新打开了我的项目,我不得不更改一些 maven-native-plugin 配置并添加 - Djava.library.path=path/to/dir 到 VM 参数,为什么?
【解决方案2】:

在我的应用程序中,我需要来自 MS 的 sqljdbc4.jar。我的项目是一个 Maven 项目,所以我遇到了同样的问题,我无法在 Eclipse 中编辑 sqljdbc4.jar 下的 Native Library Location。

我的错误是这样的:

加载sqljdbc_auth.dll失败原因:java.library.path中没有sqljdbc_auth

所以我添加了这个:

-Djava.library.path="C:\Documents and Settings\ccrhlj01\My Documents\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x86"

在我的虚拟机参数中。

  • 转到您的 java 项目的运行配置。
  • 打开“参数”选项卡并在 VM 参数中输入 -Djava.library.path="C:\Documents and Settings\ccrhlj01\My Documents\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x86"

记住路径周围的引号。在我的情况下,那是我的位置,你需要找到你的 dll 位置。

【讨论】:

    【解决方案3】:

    实际上,您可以将 dll 复制到 PATH 变量上的任何目录,例如:C:\Windows\System32。这样,您不必在 Eclipse 的 VM 参数选项卡中添加参数。

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多