赞
踩
TestMain.java:
- import javax.swing.*;
- import java.awt.*;
-
- /**
- * @Author : xj
- * @Date : 2022/5/30 8:54
- * @Description :普通Java项目——Jar包测试
- */
- public class TestMain {
- //定义一个CreateJFrame方法
- public void CreateJFrame(String title){
- //创建一个JFrame对象
- JFrame jFrame = new JFrame(title);
- //获取一个容器
- Container container = jFrame.getContentPane();
- //创建一个JLabel标签
- JLabel jl = new JLabel("这是一个JFrame窗体");
- //使标签上的文字居中
- jl.setHorizontalAlignment(SwingConstants.CENTER);
- //将标签添加到容器中
- container.add(jl);
- //设置容器的背景颜色
- container.setBackground(Color.gray);
- //设置JFrame可见
- jFrame.setVisible(true);
- //设置JFrame大小
- jFrame.setSize(500,500);
- //设置JFrame的显示位置
- jFrame.setLocation(600,300);
- //设置窗口关闭方式
- jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- }
-
- public static void main(String[] args) {
- new TestMain().CreateJFrame("普通Java项目——Jar包测试");
- System.out.println("普通Java项目——Jar包大功告成!");
- }
- }

如果对文件做了修改,要重新打包,只需要rebuild即可:
(1)方法一:双击Jar文件直接运行
(2)方法二:在DOS中使用Java指令运行
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:
- Manifest-Version: 1.0
- Created-By: Apache Ant 1.5.1
- Extension-Name: Struts Framework
- Specification-Title: Struts Framework
- Specification-Vendor: Apache Software Foundation
- Specification-Version: 1.1
- Implementation-Title: Struts Framework
- Implementation-Vendor: Apache Software Foundation
- Implementation-Vendor-Id: org.apache
- Implementation-Version: 1.1
- Class-Path: commons-beanutils.jar commons-collections.jar commons-digester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar struts-legacy.jar
注意:MANIFEST 文件末尾必须要有一个空行,而且每行的冒号后面必须要有一个空格。
如果我们把MANIFEST中的配置信息进行分类,可以归纳出下面几个大类:
(1)一般属性
1> Manifest-Version
用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2> Created-By
声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:
Created-By: Apache Ant 1.5.1
3> Signature-Version
定义jar文件的签名版本
4> Class-Path
应用程序或者类装载器使用该值来构建内部的类搜索路径
(2)应用程序相关属性
1> Main-Class
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
创建Maven项目参考我的另一篇文章:
IDEA创建一个maven项目_人……杰的博客-CSDN博客_idea新建一个maven项目
创建的结果如下:
(1).在pom.xml中添加Maven对应的打Jar包插件信息
pom.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <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.xj</groupId>
- <artifactId>MavenProJarTest</artifactId>
- <version>1.0-SNAPSHOT</version>
-
-
- <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <!--编译源文件和测试源文件-->
- <artifactId>maven-compiler-plugin</artifactId>
- <!--该插件所需要的特殊配置-->
- <configuration>
- <!--源代码使用的JDK版本-->
- <source>1.8</source>
- <!--需要生成的目标class文件的编译版本-->
- <target>1.8</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <!--创建Jar文件-->
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <!-- 生成MANIFEST.MF的设置 -->
- <manifest>
- <!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
- <addClasspath>true</addClasspath>
- <!--这个属性特别关键,如果没有这个属性,有时候我们引用的包maven库
- 下面可能会有多个包,并且只有一个是正确的,其余的可能是带时间戳的,
- 此时会在classpath下面把那个带时间戳的给添加上去,
- 然后我们 在依赖打包的时候,打的是正确的,所以两头会对不上,报错。 -->
- <useUniqueVersions>false</useUniqueVersions>
- <!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个jar本身和依赖包在同一级目录,则不需要添加 -->
- <classpathPrefix>lib/</classpathPrefix>
- <!-- jar启动入口类 -->
- <mainClass>TestMain</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-
- </project>

其中<build>......</build>之间的信息就是打Jar的配置信息。
maven打包插件需要说明的地方:
需要说明的是,如果一个maven项目中有多个子目录,每一个子目录中的pom.xml对应一个项目,它的作用范围只有这一个子目录下的。比如扫描配置文件,如果要让一个子目录下的pom.xml扫描另一个子目录下的配置文件,那是做不到的。在打jar包的时候,只运行当前的pom.xml文件。当然也有其他的打包方法,比如使用spring-boot-maven-plugin插件在打Jar包时,会引入依赖包。
(2).使用IDEA打成Jar文件
(1)方法一:双击Jar文件直接运行
(2)方法二:在DOS中使用Java指令运行
1.使用IDEA创建一个Spring Boot项目
创建Spring Boot项目参考我的另一篇文章:
Spring Boot之创建一个Spring Boot项目(一)_人……杰的博客-CSDN博客
创建的结果如下:
SpringBootMain.java:
- package com.xj.main;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- /**
- * @Author : xjfu
- * @Date : 2022/6/20 9:04
- * @Description :Spring Boot 启动类
- */
- @SpringBootApplication
- public class SpringBootMain {
- public static void main(String[] args) {
- SpringApplication.run(SpringBootMain.class, args);
- }
- }

HelloController.java:
- package com.xj.main.controller;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- /**
- * @Author : xjfu
- * @Date : 2022/6/20 9:07
- * @Description : Controller类
- */
- @Controller
- public class HelloController {
-
- @ResponseBody
- @RequestMapping(value = "/hello")
- public String sayHello(){
- return "Hello ! Spring Boot Project Jar Test!";
- }
- }

pom.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <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.xj</groupId>
- <artifactId>spring_boot_jar_test</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <!--Spring Boot所需Jar包-->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.4.5</version>
- <relativePath/>
- </parent>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- </project>

pom.xml:
- <?xml version="1.0" encoding="UTF-8"?>
- <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.xj</groupId>
- <artifactId>spring_boot_jar_test</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <!--Spring Boot所需Jar包-->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.4.5</version>
- <relativePath/>
- </parent>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成-->
- <build>
- <plugins>
- <!--使用SpringBoot的打包插件-->
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- </project>

运行方法1——双击打包文件运行程序:
注意启动后要关闭,不然就会一直占用着“8080”端口:
运行方法2——java -jar 命令运行:
1.jar包的几种制作方式_一个努力的菜鸟的博客-CSDN博客_怎么制作jar包
2.Java 制作 jar 包的基本流程_GGN_2015的博客-CSDN博客_如何开发jar包
3.MANIFEST.MF文件详解 - DavidGandy - 博客园
4.java打jar包的几种方式详解 - jack_Meng - 博客园
5.Maven build之pom.xml文件中的Build配置_u010010606的博客-CSDN博客_<build>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。