创建JAR文件而不包含外部依赖项
是否可以创建需要外部依赖关系的JAR文件而不在JAR文件中包含这些依赖关系?
我的google-fu未能给我答案; 我发现的所有内容都显示了如何将它们包含在JAR文件中,但是没有在清单文件中放置什么来说“我还没有它们,请查看用户的类路径”。 我假设在用户的类路径上正确安装和配置了依赖项。
就我而言,我的依赖项是Apache Commons CLI和Math。
编辑:在我的JAR文件中,我有Main.class。
我的清单文件如下:
Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: Main
我的CLASSPATH看起来像
.;C:\Program Files\Java\jre1.6.0_06\lib\ext\QTJava.zip;C:\java_lib\commons-cli-1.2.jar;C:\java_lib\commons-math-2.0\commons-math-2.0.jar
如果我将依赖项包含在/lib
中的JAR中并将行Class-Path: lib/commons-math-2.0.jar lib/commons-cli-1.2.jar
到清单中,那么它确实有效。
我已经尝试将Class-Path: commons-math-2.0.jar commons-cli-1.2.jar
到清单中而不包括JAR中的文件只是为了看看它是否可行,但事实并非如此。
使用META-INF/MANIFEST.MF
的Class-Path
条目来告知在哪里查找相对于JAR的依赖项。 例如:
Class-Path: servlet.jar ../foo/bar.jar acme/beans.jar
这当然是可能的。 考虑它的一种方法是每次创建一个jar时,你都依赖于jre中的类,并且没有必要将它们包含在jar中。 jre将自动在类路径中查找它们。 如果找不到它们,您将看到NoClassDefFoundError
。
- 在eclipse中使用额外的本机代码库导出到Runnable jar
- 使用maven-assembly-plugin包含所需的驱动程序时找不到合适的驱动程序
- Java程序的Cron工作
- 无法使用java -jar命令执行jar文件
- 线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:资源路径中找不到jnidispatch(/ com / sun /jna/win32-x86/jnidispatch.dll)
- 构建包含其所有依赖项的JAR
- 使用命令行参数运行jar文件
- 在Netbeans 7中更改JAR文件的目标文件夹
- 为每个平台构建一个jar用于多平台SWT应用程序