4

我试图让一些本机依赖项(LWJGL)在 Eclipse(Juno)和 Maven 中顺利工作。

现在的情况:

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

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

4

3 回答 3

5

试试这个步骤;

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

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

于 2012-08-15T08:44:16.777 回答
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"

在我的虚拟机参数中。

  • 转到您的 java 项目的运行配置。
  • 打开 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"VM Arguments。

记住路径周围的引号。就我而言,那是我的位置,您需要找到您的 dll 位置。

于 2012-11-27T15:28:01.083 回答
0

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

于 2012-11-27T16:19:45.183 回答