Java 使用Maven项目中的依赖项进行构建?

Java 使用Maven项目中的依赖项进行构建?,java,maven,netbeans,deployment,Java,Maven,Netbeans,Deployment,我在NetBeans中有一个Maven项目,它具有各种依赖项,允许我绘制一些3D图表/图形(JOGL、Gluegen和JZY3D)。如果我从NetBeans运行项目,这些都可以很好地工作,但是当我将项目构建到JAR文件中时,我会得到以下结果 Exception in thread "Building 3D Scatter Plot" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path at java.lan

我在NetBeans中有一个Maven项目,它具有各种依赖项,允许我绘制一些3D图表/图形(JOGL、Gluegen和JZY3D)。如果我从NetBeans运行项目,这些都可以很好地工作,但是当我将项目构建到JAR文件中时,我会得到以下结果

Exception in thread "Building 3D Scatter Plot" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:442)

这是Maven/NetBeans没有使用所有正确的依赖项构建JAR的问题,还是我在这里遗漏了什么?

对于本机库的依赖项,库必须位于
路径中,或者列在
java.library.PATH
系统属性中。您可以将其作为参数传递给java进程,如下所示:
java-Djava.library.path=/path/to/dir


我认为您在Netbeans之外执行操作时可能缺少这一部分。

对于本机库的依赖关系,库必须位于
路径中,或者列在
java.library.PATH
系统属性中。您可以将其作为参数传递给java进程,如下所示:
java-Djava.library.path=/path/to/dir


我认为在Netbeans之外执行操作时,您可能缺少这一部分。

在我看来,它正在搜索一个dll(gluegen-rt.dll),它应该位于java库路径中

您可以添加dll依赖项(您需要在repo或Nexus中手动添加):


gluegen rt
gluegen rt
动态链接库

在我看来,它正在搜索一个dll(gluegen-rt.dll),它应该位于java库路径中

您可以添加dll依赖项(您需要在repo或Nexus中手动添加):


gluegen rt
gluegen rt
动态链接库

Update:因此我将gluegen-rt.jar及其本机版本(我假设它正在查找的jar文件)移动到与我的jar文件位于同一文件夹中的/lib,然后使用以下命令(仍然会得到相同的错误)java-Djava.library.path=/lib-jar application.jar在将gluegen-rt.so(或windows的dll)库放在应用程序jar旁边后,它不应该是
-Djava.library.path=/lib
。尝试了一下,仍然没有结果:(您仍然收到相同的错误,即“java.lang.UnsatisfiedLinkError:no gluegen rt in java.library.path”在将.so/dll放在
java.library.path
中之后?更新:因此我将gluegen-rt.jar及其本机版本(我假设它正在查找的jar文件)移动到与我的jar文件位于同一文件夹中的/lib,然后使用以下命令(仍然得到相同的错误)java-Djava.library.path=/lib-jar application.jar在将gluegen-rt.so(或windows的dll)库放在应用程序jar旁边后,它不应该是
-Djava.library.path=/lib
。尝试了一下,仍然没有结果:(您仍然收到相同的错误,即“java.lang.UnsatisfiedLinkError:no gluegen rt in java.library.path”将.so/dll放入
java.library.path
之后?
<dependency>
    <groupId>gluegen-rt</groupId>
    <artifactId>gluegen-rt</artifactId>
    <type>dll</type>
</dependency>