有没有办法强制maven(2.0.9)在一个jar文件中包含所有依赖项?
我将一个项目构建到一个jar文件中.我希望将依赖项中的类复制到jar中.
更新:我知道我不能在jar文件中包含一个jar文件.我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中.
是否可以在maven下管理本机库(.so)?
我们使用一些依赖于外部本机库的jar,所以我正在寻找一些方法来对它们进行mavenize.
谢谢.
背景
所以我试图在运行时在Mac OS X 上将jnilib(特别是JOGL)加载到Java中.我一直在关注相关的Stack Overflow问题:
我的最终目标是将特定于平台的JOGL文件打包到JAR中,并将它们解压缩到临时目录中并在启动时加载它们.我回过头来尝试使用硬编码路径加载JOGL:
File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib");
System.load(f.toString());
f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib");
System.load(f.toString());
Run Code Online (Sandbox Code Playgroud)
尝试使用JOGL API时出现以下异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
Run Code Online (Sandbox Code Playgroud)
但是当我java.library.path通过添加以下JVM选项指定时:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
Run Code Online (Sandbox Code Playgroud)
一切正常.
题
是否可以System.load在Mac OS X上使用(或其他变体)作为在运行时调用的-Djava.library.path的替代?
我在我的java项目中使用maven,我不明白如何添加本地库。在我的非 Maven 项目中,我是通过 CLASSPATH 完成的。我在当前的 java 项目中使用 NetBeans 和 maven。
我有一个运行Java EE 6的Glassfish 3.1.1 Web应用程序.我的一个类具有本机库依赖项.我正在使用JNI来使用这种原生方法.该过程的一部分涉及创建共享库.so文件.在我的一个Java类中,将有一个System.Loadlibrary("library"); 调用引用该library.so文件.
我的问题是,我应该在哪里放置此共享库以及它引用的本机代码,以便在Glassfish上访问和使用此JNI功能.
我需要调用几个C++程序,这些程序可以在Glassfish托管的机器上的任何位置移动.我应该把它们放在domain1/ext文件夹中吗?将它们作为本机库添加到构建路径中的jar.这是怎么做到的?