【问题标题】:How to get maven to use the installed java to create the jar file? [duplicate]如何让 maven 使用已安装的 java 创建 jar 文件? [复制]
【发布时间】:2021-10-01 08:06:53
【问题描述】:

我正在尝试从我的 spring 项目中创建一个 jar 文件。我使用命令mvn package。这些是我的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cgny</groupId>
    <artifactId>apm</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>apm</name>
    <description>APM</description>
    <properties>
        <java.version>16</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- latest influxdb dependency -->
        <dependency>
            <groupId>org.influxdb</groupId>
            <artifactId>influxdb-java</artifactId>
            <version>2.21</version>
        </dependency>


        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180130</version>
        </dependency>

        <!-- XMl Parser -->
        <dependency>
            <groupId>org.jdom</groupId>
            <artifactId>jdom2</artifactId>
            <version>2.0.3</version>
        </dependency>

        <!-- thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.5.2</version>
        </dependency>



    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

源和目标已设置为 java 1.8,但是当我使用 java -jar 运行 jar 文件时,我收到 UnsupportedClassVersion 错误。

我知道发生这种情况是因为编译项目的 java 版本与我用来运行 jar 文件的版本不同,但我的 java 版本是 1.8.0_51,我也尝试将其作为目标和源pom 文件,结果相同。

JAVA_HOME 和 PATH 变量已设置为正确的目录。

如何配置 maven 使其只使用已安装的 java?

编辑:错误信息-

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/cgny/apm/ApmApplication has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)

【问题讨论】:

  • 这能回答你的问题吗? Required Java version of Maven Dependency?
  • >源和目标已设置为 java 1.8,但是当我使用 java -jar 运行 jar 文件时,出现 UnsupportedClassVersion 错误。We need to see that。库也需要
  • 运行 "mvn -version" 并确保 maven 使用您的 JAVA_HOME 中定义的相同 Java 版本
  • maven java版本与JAVA_HOME版本一致。

标签: java maven pom.xml


【解决方案1】:

该错误表示com/cgny/apm/ApmApplication 是用 Java 16 编译的,因此不能与 Java 8 一起使用。

【讨论】:

  • 但是当我收到此错误时,我正在使用 Java 16 运行它。
  • 您将源和目标设置为 1.8。
  • 它们已设置为 1.8
  • 是的,如果您将源和目标设置为 Java 8,但您希望使用 Java 16 的字节码组件,您希望它如何工作?
【解决方案2】:

编译后的 jar 很好,我刚刚安装了 java 8,它以某种方式覆盖了 JAVA_HOME 和 Path 变量。 java -version 现在显示 16 而不是 1.8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多