export_jar_netbeans

#0x00 序

最近参加一个比赛,做了一个Java的类聊天系统,有服务端和客户端。
基本功能全部完成后,开始导出Jar包,项目引入了第三方Jar包。
在Eclipse中,不支持项目包含三方Jar导出单一Jar包,尝试fat jar最终没能安装上,
不知道是什么原因(在线安装插件,安装失败,下载好放入plugin,不成功,linux环境)

最终放弃,跑到Netbeans中找解决方案

#0x00 解决方案

项目在Netbeans中开发完成后,我们需要将项目导出为Jar包
如果项目没有引入第三方Jar包,运行项目后,在项目路径的dist文件夹下Netbeans会自动构建项目Jar包

而项目如果是使用了第三方Jar包,又想将项目整体导出为一个Jar包,就要采用以下方法了
首先,在文件导航条下找到项目路径下的build.xml文件

然后,在</project>前加入以下代码,其中
<property name="store.jar.name" value="YouJarPacketName"/>
中的value可以随意更改,这个就是jar包名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<target name="package-for-store" depends="jar">  

<!-- Change the value of this property to be the name of your JAR,
minus the .jar extension. It should not have spaces.
<property name="store.jar.name" value="MyJarName"/>
-->

<property name="store.jar.name" value="YouJarPacketName"/>


<!-- don't edit below this line -->

<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>

接着,右键点击build.xml在弹出框中选择 运行目标->其它目标->package-for-store
点击后会在项目路径下生成一个store文件夹,里面就包含了一个你想要的jar包。