【问题标题】:Unable to execute Maven .jar无法执行 Maven .jar
【发布时间】:2020-09-06 21:16:12
【问题描述】:

作为前言(你可以跳过这个),我是一个相对缺乏经验的程序员(与行业专业人士相比),我想尝试使用 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。

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

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

【问题讨论】:

  • 您的路径中似乎有 java 8。执行 java --version 以查看它是否指向 java 8 并在您的 JDK_HOME 和 PATH 中更正它以指向 Java 11。

标签: java maven-3 maven-assembly-plugin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 2020-08-14
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2017-05-12
    相关资源
    最近更新 更多