Java创建可执行的Jar文件的方法实践

 更新时间:2023年12月24日 16:58:31   作者:张知文  
创建的可执行Jar文件实际就是在原始Jar的清单文件中添加了Main-Class的配置,本文主要介绍了Java创建可执行的Jar文件的方法实践,感兴趣的可以了解一下

在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中创建jar文件

在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节点。

在IntelliJ DEA中创建Jar文件

File -> Project Structure…->Project Settings->Artifacts-> + ->jar-> 选择From modules with dependencies…->选择module、Main Class、JAR files from libraries -> 勾选include in project build

在Maven创建Jar文件

在pom.xml文件中的maven-jar-plugin中指定mainClass,如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<mainClass>io.github.jast90.java.api.HashMapAnalyzer</mainClass>
			</manifest>
		</archive>
	</configuration>
</plugin>

在JCreator中创建一个jar文件

您可以配置一个“tool”,以自动执行jar创建过程。您只需要做一次。

  • 单击Configure/Options
  • 单击左栏中的Tools。
  • 单击New,然后选择Create Jar file。
  • 在Tools下方的左列中,单击新创建的条目Create Jar File。
  • 编辑标有“Arguments:”的中间行:输入
cvfm $[PrjName].jar manifest.txt *.class
  • 单击OK。
    现在为您的程序设置一个项目,创建一个清单文件manifest.txt或复制并编辑一个现有的项目。 将manifest.txt放在.class文件所在的文件夹中。 在“ View/Toolbars”下,选中“Tools”工具栏。 单击相应的tool按钮,或者按Ctrl-1(如果这是第n个工具,则按Ctrl-n)以运行“创建Jar文件”工具。

使用Windows资源管理器,转到您刚创建的jar文件,然后双击运行它。

在命令提示符下创建jar文件

  • 启动命令提示符。
  • 导航到保存您的类文件的文件夹:
C:\>cd \mywork
  • 设置路径以包含JDK的bin。例如:
C:\mywork> path c:\Program Files\Java\jdk1.7.0_25\bin;%path%
  • 编译你的类
C:\mywork> javac *.java
  • 创建一个清单文件和您的jar文件:
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
  • 测试你的jar
C:\mywork> Craps.jar

或者
C:\mywork> java -jar Craps.jar

参考

到此这篇关于Java创建可执行的Jar文件的方法实践的文章就介绍到这了,更多相关Java创建可执行Jar文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 如何基于JWT实现接口的授权访问详解

    如何基于JWT实现接口的授权访问详解

    授权是最常见的JWT使用场景,下面这篇文章主要给大家介绍了关于如何基于JWT实现接口的授权访问的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • java如何分布式锁实现和选型

    java如何分布式锁实现和选型

    文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zookeeper的分布式锁实现示例,分析了每种方法的优点和缺点
    2025-01-01
  • Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因解读

    Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因解读

    这篇文章主要介绍了Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java设计模式之备忘录模式_动力节点Java学院

    Java设计模式之备忘录模式_动力节点Java学院

    我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。接下来通过本文给大家分享java设计模式之备忘录模式,感兴趣的的朋友一起看看吧
    2017-08-08
  • servlet上传文件实现代码详解(四)

    servlet上传文件实现代码详解(四)

    这篇文章主要为大家详细介绍了servlet上传文件的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • java中各种对象的比较方法

    java中各种对象的比较方法

    Java对象的比较是初学者不易掌握的,下面这篇文章主要给大家介绍了关于java中各种对象的比较方法,文中通过实例代码以及图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 浅谈Java中return和finally的问题

    浅谈Java中return和finally的问题

    在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,下面我们来详细讨论下
    2015-10-10
  • 在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    Quartz 是一个功能强大的调度库,可以在 Java 应用中用于执行定时任务,本文将介绍如何在 Spring 框架下配置 Quartz 集群,并使用 MySQL 作为数据源来存储调度信息,文中有详细的代码供大家参考,需要的朋友可以参考下
    2025-01-01
  • Java微信公众平台之群发接口(高级群发)

    Java微信公众平台之群发接口(高级群发)

    这篇文章主要为大家详细介绍了Java微信公众平台之群发接口,高级群发功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Spring Boot中使用Activiti的方法教程(二)

    Spring Boot中使用Activiti的方法教程(二)

    工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,下面这篇文章主要给大家介绍了关于Spring Boot中使用Activiti的相关资料,需要的朋友可以参考下
    2018-08-08

最新评论