将Java项目打包成可执行的jar包

 更新时间:2020年06月17日 10:02:27   作者:嘤 嘤 嘤  
这篇文章主要介绍了将Java项目打包成可执行的jar包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、通过 eclipse 自带打包

测试项目: 

 

Main.java

package com.bug;
import org.junit.Test;
public class Main {	
	public static void main(String[] args) {
		test();
	}
	@Test
	public static void test() {
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
		System.out.println("HelloWorld");
	}
}

1.右键项目文件夹,点击export,选择JAR flie点击next。

2.勾选要打包的文件夹,这里只要勾选需要编译的java文件就可以了,下面的JAR file为打包后的保存路径和jar名称,选择好后点击next。

Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
Export all output folders for checked projects 表示导出选中项目的所有文件夹
Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,不想泄漏源代码,那么就不要选这项了
Export refactorings for checked projects 把一些重构的信息文件也包含进去

3.如下图,点击next。

  4.如下图,Main class为项目入口路径,点击后面的按钮可以选择项目入口路径,选择好后点击finish即可完成打包。

Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。
Seal content:要封装整个jar或者指定的包packet。
Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。

在打包好后有几个问题需要注意:

1.MANIFEST.MF文件需要根据自己的项目需要进行编写替换,MANIFEST.MF文件的修改需要严格遵守书写规范,

首行为 Manifest-Version: 1.0   

第二行为Class-Path: xxx.jar(依赖的jar,没有就不写)  

第三行为Main-Class: 项目入口路径

每个冒号后面需要有一个空格
每行结束不能有空格
Main-Class: 项目入口路径 后面需要打两个换行
如果依赖多个jar,则书写完每个jar后空一格写下一个
每行不能超过72个字符,如果每行写一个jar,则每行开始空两格。

 lib/junit.jar  org.hamcrest.core_1.3.0.v20180420-1519.jar,为我的 juit 需要的 jar 包,创建一个 lib 目录存储着两个 jar 包。

 

2. 使用eclipse将项目打包后,项目中实际调取的依赖和文件等路径一般需要和项目的jar存放到同一级目录,否则会出现ClassNotFound等异常,放在同一级目录也方便后面根据需求修改配置文件。

3.编译好的jar可以用java -jar xxx.jar运行,这种运行方式会在命令行或linux服务器上显示启动和项目中的打印信息,当使用Ctrl+C退出时,jar的运行也会终止。

二、使用 maven 打包

Maim

package com.bug.test;
import org.junit.Test;
public class Main {
	public static void main(String[] args) {
		test();
	}
	@Test
	public static void test() {
		for(int i = 0; i < 10; i++) {
			System.out.println(i);
		}
	}
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.bug</groupId>
	<artifactId>Test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
 
	<!-- 依赖 -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>RELEASE</version>
		</dependency>
	</dependencies>
 
 
 
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-assembly-plugin </artifactId>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<archive>
						<manifest>
							<!-- 工程主类的全限定名 -->
							<mainClass>com.bug.test.Main</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
 
 
</project>

这样也可以:

<build>
	<pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<archive>
						<manifest>
							<mainClass>com.bug.test.Main</mainClass>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
					</archive>
					<classesDirectory>
					</classesDirectory>
				</configuration>
			</plugin>
		</plugins>
	</pluginManagement>
</build>

注意:如果工程上显示红叉。在项目上右键->maven->update project即可。

将程序打成jar包:

步骤详情:右键->Run as->maven install。等待编译完成就会在项目的target文件夹中生成jar包。如果看不到。在项目上右键->Refresh,即可看到。

参考:https://www.jb51.net/article/142553.htm

idea打包java程序(包含依赖的所有jar包):https://www.jb51.net/article/188851.htm

到此这篇关于将Java项目打包成可执行的jar包的文章就介绍到这了,更多相关Java打包成可执行ar内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Java使用Pipeline对Redis批量读写(hmset&hgetall)

    详解Java使用Pipeline对Redis批量读写(hmset&hgetall)

    本篇文章主要介绍了Java使用Pipeline对Redis批量读写(hmset&hgetall),具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • 详解springboot+aop+Lua分布式限流的最佳实践

    详解springboot+aop+Lua分布式限流的最佳实践

    这篇文章主要介绍了详解springboot+aop+Lua分布式限流的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Spring Boot的properties配置文件读取

    Spring Boot的properties配置文件读取

    这篇文章主要介绍了Spring Boot的properties配置文件读取,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java中的CAS和ABA问题说明

    Java中的CAS和ABA问题说明

    这篇文章主要介绍了Java中的CAS和ABA问题说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Java中的TreeSet集合详解

    Java中的TreeSet集合详解

    这篇文章主要介绍了Java中的TreeSet集合详解,TreeSet 是一个 有序集合,它扩展了 AbstractSet 类并实现了 NavigableSet 接口,作为自平衡二叉搜索树,二叉树的每个节点包括一个额外的位,用于识别红色或黑色的节点的颜色,需要的朋友可以参考下
    2023-09-09
  • spring注入配置文件属性到java类

    spring注入配置文件属性到java类

    这篇文章主要为大家介绍了spring注入配置文件属性到java类实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • java实现/创建线程的几种方式小结

    java实现/创建线程的几种方式小结

    在JAVA中,用Thread类代表线程,所有线程对象都必须是Thread类或者Thread类子类的实例,下面这篇文章主要介绍了java实现/创建线程的几种方式,需要的朋友可以参考下
    2021-08-08
  • Spring配置多数据源导致事物无法回滚问题

    Spring配置多数据源导致事物无法回滚问题

    这篇文章主要介绍了Spring配置多数据源导致事物无法回滚问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot整合SpringSecurity实现JWT认证的项目实践

    SpringBoot整合SpringSecurity实现JWT认证的项目实践

    本文会通过创建SpringBoot项目整合SpringSecurity,实现完整的JWT认证机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java毕业设计之多用户宿舍管理系统的实现

    Java毕业设计之多用户宿舍管理系统的实现

    这篇文章主要介绍了基于Java实现的多用户宿舍管理系统,本文采用了jsp、servlet、jdbc等技术,文中示例代码讲解详细,需要的可以参考一下
    2022-02-02

最新评论