首页 > 解决方案 > 无法执行 Maven .jar

问题描述

作为前言(你可以跳过这个),我是一个相对缺乏经验的程序员(与行业专业人士相比),我想尝试使用 Maven 作为依赖管理器,并作为生成自包含 .jar 的更好方法文件,用于我的高级科学博览会项目。

(如果您跳过了上一段,请从这里开始阅读)我能够清理、验证、编译和打包我的 Maven 项目。生成 .jar 文件,在我的文件资源管理器中,它被识别为可执行的 .jar 文件。我正在使用 JDK 11.0.2。当我在我的文件资源管理器中双击 .jar 文件时,我的光标会在没有任何反应之前做一个小小的“我在做某事”旋转蓝色圆圈一瞬间。当我尝试使用运行文件时

java -jar Project-Name-alpha.jar

我收到以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/CompanyName/Main has been compiled by a more recent version of the Java Runtime (class file version 55.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 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

我的 pom.xml 文件中的相关部分是:

  <groupId>com.CompanyName</groupId>
  <artifactId>ProjectName</artifactId>
  <version>alpha</version>
  <packaging>jar</packaging>

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <classpathPrefix>dependency-jars/</classpathPrefix>
          <mainClass>com.FoxInnovations.Main</mainClass>
        </manifest>
       </archive>
     </configuration>
  </plugin>



   <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> 
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
          <goal>copy-dependencies</goal>
      </goals>
      <configuration>
          <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
      </configuration>
        </execution>
    </executions>
      </plugin>        <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> 
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
      <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
          <goal>copy-dependencies</goal>
      </goals>
      <configuration>
          <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
      </configuration>
        </execution>
    </executions>
      </plugin>

我认为问题可能是我没有正确的 java JRE 但无法找到 JRE 11,我认为 JDK 通常包含相应的 JRE。

我敢打赌,我可能犯了一些我忽略的菜鸟错误。

如果我错误地没有包含对解决此问题很重要的内容,请告诉我,我会尽快添加。

标签: javamaven-3maven-assembly-plugin

解决方案


您正在使用低于用于编译的版本的 java 版本执行 jar。您可能需要为 maven 编译器插件设置 java 目标和源。

<properties>
    <maven.compiler.source>1.11</maven.compiler.source>
    <maven.compiler.target>1.11</maven.compiler>target>
</properties>

推荐阅读