在Java中,通常将多个类合并到一个.jar(“ java归档文件”)文件中。库类以这种方式存储。较大的项目使用jar文件。您也可以创建结合了多个类的自己的jar文件。
jar文件是使用JDK的jar.exe实用程序创建的。 通过告诉jar.exe哪个类具有main,可以使jar文件可运行。 为此,您需要创建一个清单文件。 清单是带有“ Main-Class”指令的单行文本文件。 例如:
Main-Class: io.github.jast90.test.Main
该行必须以换行符结尾。(即:多一行)
用主类清单创建的jar文件既可以用作库,也可以用作可运行的jar。 如果将其用作库,则可以编辑和编译jar中包含的任何类,然后将其添加到您的项目中。 然后它将覆盖jar文件中的那个。
您可以在任何文本编辑器中创建清单文件,甚至可以使用MS-DOS echo命令创建清单文件。 您可以为清单文件指定任何名称,但最好使用一些标准名称,例如manifest.txt。
有了清单并编译完所有类后,您需要运行JDK的jar.exe实用程序。 它位于JDK的bin文件夹中,与javac.exe和java.exe相同。 jar.exe接受命令行参数; 如果不带任何参数运行它,它将显示用法信息和示例。 你需要
jar cvfm MyJarName.jar manifest.txt *.class
cvfm的意思是“创建一个jar;显示详细输出;指定输出jar文件名;指定清单文件名。” 这之后是您希望为jar文件指定的名称,清单文件的名称以及要包含在jar中的.class文件的列表。 * .class表示当前目录中的所有类文件。
实际上,如果清单仅包含Main-Class指令,则可以使用e开关(而不是m)直接在jar.exe的命令行上指定主类。 这样就不需要单独的清单文件了; jar将为您添加所需的清单到您的jar文件中。 例如:
jar cvfe MyJarName.jar MyMainClass *.class
以下是在Eclipse中创建jar文件的参考,IntelliJ DEA中创建Jar文件的参考,在Maven创建Jar文件的参考,以及在命令提示符和JCreator中执行此操作的详细步骤。
在Eclipse帮助内容中,展开“ Java开发用户指南” ==>“Tasks” ==>“Creating JAR files.”。按照“Creating a new JAR file”或“Creating a new runnable JAR file.”中的说明进行操作。
出于某种原因,JAR File和Runnable JAR File命令位于File菜单下:单击Export …并展开Java节点。
File -> Project Structure…->Project Settings->Artifacts-> + ->jar-> 选择From modules with dependencies…->选择module、Main Class、JAR files from libraries -> 勾选include in project build
在pom.xml文件中的maven-jar-plugin中指定mainClass,如下:
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-jar-pluginartifactId>
<configuration>
<archive>
<manifest>
<mainClass>io.github.jast90.java.api.HashMapAnalyzermainClass>
manifest>
archive>
configuration>
plugin>
您可以配置一个“tool”,以自动执行jar创建过程。您只需要做一次。
cvfm $[PrjName].jar manifest.txt *.class
使用Windows资源管理器,转到您刚创建的jar文件,然后双击运行它。
C:\>cd \mywork
C:\mywork> path c:\Program Files\Java\jdk1.7.0_25\bin;%path%
C:\mywork> javac *.java
C:\mywork> echo Main-Class: io.github.jast90.test.Main >manifest.txt
C:\mywork> jar cvfm Craps.jar manifest.txt *.class
或者
C:\mywork> jar cvfe Craps.jar Craps *.class
C:\mywork> Craps.jar
或者
C:\mywork> java -jar Craps.jar