• Intellij IDEA中maven项目打包问题


      学习使用java写项目的时候,java的jar包对我来说是很神奇又很复杂不想去了解的东西,如今形势所迫开始写java项目,做了些了解,也有几个问题。

    1、其中一个打包方式

    在pom文件中输入如下插件(在<project>的里面),然后点击右边栏偏上那个“m”字,进入maven,选中项目下Lifecycle/package,然后运行maven中上方的运行小三角。

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <filters>
                                    <filter>
                                        <artifact>*:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                                <transformers>
                                    <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>com.lwx.sha256.main</mainClass>
                                    </transformer>
                                    <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                        <resource>META-INF/spring.handlers</resource>
                                    </transformer>
                                    <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                        <resource>META-INF/spring.schemas</resource>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    pom.xml

      注意:上面的<transformer>的<mainClass>指定了程序main函数入口所在的类

    2、关于package

    其实java文件的package我一开始是不用的,因为其他语言不需要,而且不用也没见运行不了,所以我的代码都是如下所示。

    但是在打包的那一步骤可以看出来我是在pom文件中直接指定了项目入口,然后我就被动了解了一下package,如果我的目录依旧如上图所示,而且入口是在main文件中的main.class,那么我在pom中写的应该是<mainClass>main</mainClass>,就没有什么com.xxx.xxx了,但是我突然觉得太不规范了,把目录改成如下图所示:

    3、关于java的jre和jdk

    如果你上传jar到远端服务器,并且报了如下错误:

    Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported major.minor version 52.0

    正经来说就是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。最终是查到了解决方法,在pom中加入如下的配置,指定编译版本,这里指定1.7:

          <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>7</source>
                        <target>7</target>
                    </configuration>
                </plugin>

    之前有尝试更改jre版本,但其实这是java compiler的问题。

    另外关于jre和jdk我还是云里雾里,即使网上一套一套讲了许多,但是我明知道java项目中package的规范,但是学习的时候死记,真正在用的时候还是会偷懒不建包。大概多用几次就能更加清楚两者的区别吧

      查看版本

    #查看jre版本
    $ java -version
    #查看jdk版本
    $ javac -version

      

    当你深入了解,你就会发现世界如此广袤,而你对世界的了解则是如此浅薄,请永远保持谦卑的态度。
  • 相关阅读:
    redis_ 5 集群
    redis_4 主从模式
    redis_3 持久化
    redis_2 数据类型
    linux_ubuntu 连接xftp
    redis_1 安装和简单使用
    Activiti 各个节点涉及的表
    oracle 数据库imp操作导入dmp文件时表空间问题
    ORA-27101: shared memory realm does not exist 错误的处理
    oralce清理user 和tablespace.
  • 原文地址:https://www.cnblogs.com/liwxmyself/p/11424581.html
Copyright © 2020-2023  润新知