如何将lib中的jar包含到Netbeans中的项目jar文件中?
我正在使用一些apache HttpClient jar,所以我把它们放在项目的lib目录中,当Netbeans编译项目时,它会将lib复制并生成一个项目jar到dist目录中,但是当我使用webstart运行项目时,我需要将项目jar和lib复制到tomcat的根目录中,我想知道Netbeans是否可以生成一个包含lib目录中所有jar的项目jar,这样我就不必将项目jar和lib目录复制到tomcat的根目录中。Netbeans能做到吗?好的,在以下站点找到答案:将每个依赖库(*.jar)打包到一个myProject.jar中非常容易 只需遵循这些步骤,您将最终将每个依赖库打包到单个jar中。如果您使用的是NetBeans,那么您可以完全按照它进行操作,否则您需要在项目文件中找到build.xml文件 按照以下步骤编辑build.xml 1) 单击NetBeans中项目面板左侧的如何将lib中的jar包含到Netbeans中的项目jar文件中?,netbeans,jar,package,Netbeans,Jar,Package,我正在使用一些apache HttpClient jar,所以我把它们放在项目的lib目录中,当Netbeans编译项目时,它会将lib复制并生成一个项目jar到dist目录中,但是当我使用webstart运行项目时,我需要将项目jar和lib复制到tomcat的根目录中,我想知道Netbeans是否可以生成一个包含lib目录中所有jar的项目jar,这样我就不必将项目jar和lib目录复制到tomcat的根目录中。Netbeans能做到吗?好的,在以下站点找到答案:将每个依赖库(*.jar)打
文件选项卡
2) 双击build.xml
文件,并在
行之前添加这些行
<target name="package-for-store" depends="jar">
<property name="store.jar.name" value="myProject"/>
<property name="store.dir" value="store"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${store.dir}"/>
<mkdir dir="${store.dir}"/>
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<zip destfile="${store.jar}">
<zipfileset src="${store.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete file="${store.dir}/temp_final.jar"/>
</target>
4) 保存它并右键单击build.xml,选择运行目标,然后选择其他目标,最后单击商店的软件包
5) 你完成了。现在,您可以像查看dist
文件夹一样查看,将有一个store
文件夹,其中将包含最终完整的jar,包括所有依赖的库。现在,只要您想更改/添加更多库,只需执行步骤4
步骤4的图片
好的,这就是我的解决方案。我的程序在Netbeans上编译和运行时也有问题,但当我尝试
java-jarmyjarfile.jar
时,它失败了。现在,我不完全理解Maven,我想这就是为什么让Netbeans 8.0.2在库中包含我的jar文件以将它们放入jar文件时遇到问题的原因。我在考虑如何在Eclipse中使用没有Maven的jar文件
是Maven编译所有依赖项和插件,而不是Netbeans。(如果您能让Netbeans这样做,请告诉我们如何做。)
[已解决-适用于Linux]通过打开终端
然后
下一个
下一个
这将在目标目录中创建jar文件
MyJarFile-1.0-jar-with-dependencies.jar
现在
(您可能需要运行:chmod+x MyJarFile-1.0-jar-with-dependencies.jar)
最后
java -jar MyJarFile-1.0-jar-with-dependencies.jar
请看
解决此问题。您只需将以下代码粘贴到build.xml
。这些库都是自动找到的
我们开始:
<target name="-post-jar">
<!-- Change the value to the name of the final jar without .jar -->
<property name="store.jar.name" value="MyJarName"/>
<!-- don't edit below this line -->
<property name="store.dir" value="dist"/>
<property name="temp.dir" value="temp"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${temp.dir}"/>
<mkdir dir="${temp.dir}"/>
<jar destfile="${temp.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<delete dir="${store.dir}"/>
<zip destfile="${store.jar}">
<zipfileset src="${temp.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete dir="${temp.dir}"/>
</target>
检查MainClass主文件是否在属性>运行中更新为主文件
在项目标记关闭之前,使用以下代码更新Build.xml
属性>打包>勾选全部
清洁和建设
上传到服务器
虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能无效。@Barranka感谢您的反馈,这是一个非常好的观点!当这不是一行代码时,将更新它。请更新你的回答当他说一行代码时,他的意思是你复制并粘贴上面的所有代码,然后只需更改一行代码即可为你的罐子指定所需的名称。胖罐子文件不是dist文件夹中的文件,而是store文件夹中的文件。我在Eclipse中使用了FAT-jar,但在Netbeans中缺少了一个替代方案。再次感谢。@iltafkhalid不客气,Khalid。很高兴看到你高兴。保存XML后,run target被禁用。这确实帮了我的忙!我也有同样的问题。代码在4年多后仍然可以正常工作。我几乎没有其他依赖文件,如abc.txt,是否有必要将此txt文件放入main.jar文件中,而不是与主文件单独提供?虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能会无效。这是最佳答案。很有魅力。谢谢Hasitha M Jayawardana:-)
mvn install
MyJarFile-1.0-jar-with-dependencies.jar
cd target
java -jar MyJarFile-1.0-jar-with-dependencies.jar
<target name="-post-jar">
<!-- Change the value to the name of the final jar without .jar -->
<property name="store.jar.name" value="MyJarName"/>
<!-- don't edit below this line -->
<property name="store.dir" value="dist"/>
<property name="temp.dir" value="temp"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${temp.dir}"/>
<mkdir dir="${temp.dir}"/>
<jar destfile="${temp.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<delete dir="${store.dir}"/>
<zip destfile="${store.jar}">
<zipfileset src="${temp.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete dir="${temp.dir}"/>
</target>
<!-- Change the value to the name of the final jar without .jar -->
<property name="store.jar.name" value="MyJarName"/>
<!-- don't edit below this line -->
<property name="store.dir" value="dist"/>
<property name="temp.dir" value="temp"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${temp.dir}"/>
<mkdir dir="${temp.dir}"/>
<jar destfile="${temp.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<delete dir="${store.dir}"/>
<zip destfile="${store.jar}">
<zipfileset src="${temp.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete dir="${temp.dir}"/>