现实生活中我们会常常创建一些小小的demo,对于这些小demo,我们可能并不需要用到springboot 或者spring MVC,比如我们仅仅就是数据库的对接把oracle的数据对接到mysql之类的。
那么让我们来创建一个小demo来尝试一下吧
file 》 new 》project 》 maven 》
最终生成的文件是这样的
那么我们就简单的创建一个Hello world 输出来尝试一下吧
那么本地的测试通过,我们如何来进行打包呢
我们将会在target文件夹下面获取到一个项目jar
那么现在让我们启动起来吧
结果并没有得到我们想要的Hello world,提示我们没有主清单属性,也就是说没有找到程序的驱动入口,你可能会有疑问,我以前写springboot的时候,打包生成的jar,可以直接跑来啊,为什么这里就不行了,不知道你是否记得,springboot项目有一个很奇怪的要求,就是启动类最好要直接放在代码的最外层,因为springboot项目的bean装配默认规则是根据Application类所在的包位置从上至下扫描,也就是说Application类的包外层是没有被扫描到的。
那么解决如何来解决呢?
目前查阅了网上的资料,得到了两种的解决方案:
1.配置pom文件来确定jar的启动类
在pom的文件里面添加如下的命令:
<?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.best</groupId>
<artifactId>demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!--需要修改的地方,代表是启动的入口类-->
<mainClass>
HelloWorld
</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
那么我们再次打包程序,并且运行jar,会得到下面的结果
可以看到我们想要的Hello world 是出来了,但是我们的中文(哈哈)变成了乱码,那为什么我们在测试环境下得到的是O(∩_∩)O哈哈~,而在打包成jar的时候,却是乱码呢。因为在development 下maven 项目默认是utf-8模式,而我们一旦进行了打包,maven的打包默认格式是GDK编码,一旦知道了问题所在,那么修改就简单了,我们直接在pom文件里面修改maven的配置,设置默认打包编码的格式是utf-8。如下
<!--设置Java的运行环境是1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<!--项目编码,使得中文在控制台输出不为乱码-->
<encoding>utf-8</encoding>
</configuration>
</plugin>
那么我们重新打包一下,在测试一下结果如下
第二种方法
直接使用idea的工具来构建,那么我们重新编写一个新的demo3,在里面写下同样的代码
我们按下如下的按钮
file 》 project structure
最好按我上面的步骤来,不然会出现意外。那么现在让我们直接来构建jar吧
选择build或者rebuild,第一次建议使用build,后续使用rebuild。
在这里会得到你想要的jar,那么直接运行,你可能直接成功。
,
但是也会出现中文乱码的现象,要解决这个现状,查阅了网上的资料,发现大家都在使用
java -Dfile.encoding=utf-8 -jar XXX.jar
但是我自己测试了一下,发现不灵,ε=(´ο`*)))唉
最终我在一个大佬文章的提示下找到了解决方法
https://blog.csdn.net/sjmz30071360/article/details/80137165#commentBox
那么现在你再去重新rebuild一下,就能解决乱码问题了哈。
完美