Eclipse中的Maven本机依赖项

时间:2012-08-15 07:49:55

标签: java eclipse maven m2eclipse lwjgl

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

现状:

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

让这种工作可靠地运行的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

尝试以下步骤;

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

对于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控制台并再次执行“更新项目配置”选项

答案 1 :(得分:4)

在我的应用程序中,我需要来自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"

在我的VM参数中。

  • 转到java项目的运行配置。
  • 打开Arguments选项卡,然后在VM Arguments中输入-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位置。

答案 2 :(得分:0)

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