Tim*_*Tim 14 java netbeans jar
可能重复:
将外部库放到JAR中?
我有NetBeans 6.8,我写了一个有两个库(jar文件)的类.构建它,我得到一个带有project.jar的"dist"文件夹和一个包含两个lib jar文件的"lib"文件夹.
我怎么能在一个jar文件中得到所有这些?(我不使用Maven/Ant或类似的东西.)
Tho*_*sen 13
基本问题是当前版本的Java不支持开箱即用的jar内的jar.
推荐的解决方案是使用jar中MANIFEST.MF文件中的Class-Path行指向所需的库(允许相对路径),然后将所有文件一起部署并使用"java -jar your.jar"调用它们
如果你真的想要一个"jar-inside-jar"解决方案,我们已经使用了一个罐子好几年了,但是因为我们的目标JVM在上述解决方案中运行得更好,所以我们已经离开了它.
http://one-jar.sourceforge.net/
我在Eclipse中使用了fatjar插件.我没有将它构建到Netbeans中的任何经验,但是构建成一个蚂蚁脚本很简单,我相信它是NEtbeans所使用的.
Wav*_*ick 12
您可以在build.xml文件中创建额外的构建目标.并使用zipfileset和zipgroupfileset创建一个大罐子,例如
<target name="YourBigJar" depends="-post-jar">
<jar destfile="BigJar.jar">
<zipfileset src="dist/Project1.jar"/>
<zipfileset src="../OtherProject/dist/project2.jar"/>
<zipgroupfileset dir="../libs/."/>
</jar>
</target>
Run Code Online (Sandbox Code Playgroud)
Jos*_*orn 12
我同意Waverick的观点.使用NetBeans执行此操作的最简单方法是将自定义目标添加到build.xml.(顺便说一下,由于使用NetBeans,您使用的是Ant,因为NetBeans使用Ant来构建您的jar文件.)
Waverick的Ant目标似乎旨在将来自不同NetBeans项目的已编译代码合并到当前项目的jar文件中.我的目标完全符合您的要求.
<target name="-unjar-and-copy-lib-jars">
<unjar dest="${build.classes.dir}">
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<patternset>
<exclude name="META-INF/**"/>
<exclude name="/*"/>
</patternset>
</unjar>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-unjar-and-copy-lib-jars" name="fat-jar">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<jar destfile="${dist.jar}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
<target depends="clean,fat-jar" name="clean-and-fat-jar"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30604 次 |
| 最近记录: |