将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
阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机