【问题标题】:Maven Dependencies of an incorrect version不正确版本的 Maven 依赖项
【发布时间】:2023-04-01 17:32:02
【问题描述】:

我正在尝试使用 Java JDK 1.7 运行我的 Maven 项目

每当我运行我的项目(作为 Maven 项目)(在 Java JDK 1.7 下创建)时,我都会收到错误消息:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/common/collect/ImmutableSet : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at com.google.inject.internal.Errors.<clinit>(Errors.java:105)
    at com.google.inject.internal.InternalInjectorCreator.<init>(InternalInjectorCreator.java:61)
    at com.google.inject.Guice.createInjector(Guice.java:87)
    at com.google.inject.Guice.createInjector(Guice.java:69)
    at com.google.inject.Guice.createInjector(Guice.java:59)
    at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481)
    at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206)
    at org.apache.maven.cli.MavenCli.container(MavenCli.java:636)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:282)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

请注意,过期的不是用户生成的文件。

POM 文件

<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>
  <groupId>EndUsersServ</groupId>
  <artifactId>EndUsersService</artifactId>
  <version>0.0.1-SNAPSHOT</version>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>7</maven.compiler.source>
    <maven.compiler.target>7</maven.compiler.target>
  </properties>

  <dependencies>
      <!-- https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt -->
      <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.2.6</version>
      </dependency>
      <dependency>
        <groupId>com.sun.org.apache.xml.internal</groupId>
        <artifactId>resolver</artifactId>
        <version>20050927</version>
      </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
    
</project>

我相信一个或多个 maven 插件适用于 Java 8 版,但我不确定是哪一个,即使这些插件在 pom 文件中也有特色。我需要完全重新安装我的 IDE 吗?

任何帮助表示赞赏。

项目方面

【问题讨论】:

  • 您确定仍要使用 Java 7 吗?该错误表示某些依赖项或某些插件需要 Java 8。
  • 这能回答你的问题吗? Unsupported major.minor version 52.0
  • 您使用哪个 Maven 版本?看起来您使用的版本不再支持 Java 7。
  • @dunni 嵌入式 3.63/1.16.0.20210129-0849,工作区不可用 [3.0,)
  • 所以你在 Eclipse 中使用嵌入式 Maven 运行时,而不是在命令行上?在这种情况下,最重要的是 Eclipse 的最低版本,我猜他们已经将它增加到 Java 8(注意,这仅指运行时版本,您仍然可以使用 Java 8 运行 Eclipse 并针对 JDK 7 进行开发)

标签: java maven dependencies


【解决方案1】:

我遇到了类似的问题,我正在使用调试配置使用 Java 1.7 进行编译。将 Eclipse 从 4.17 版更新到 4.21 版后,构建停止工作并出现类似错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/common/collect/ImmutableSet : Unsupported major.minor version 52.0

@dunni 评论有帮助,似乎最新版本的 Eclipse 嵌入了新版本的 Maven 3.8.1,这似乎破坏了构建。就我而言,我只需要在本地恢复并安装 Maven(v3.5.3),然后在 Preferences > Maven > Installation > Add 中,使用我的本地 maven 版本,构建成功

【讨论】:

    【解决方案2】:

    我相信,价值应该是

    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    

    通过 Eclipse IDE 运行,然后在 Java Build PathJava Compiler 下选择 java 7

    【讨论】:

    • 我仍然收到同样的错误:线程“main”中的异常 java.lang.UnsupportedClassVersionError: com/google/common/collect/ImmutableSet : Unsupported major.minor version 52.0
    • 你是如何运行代码的。通过命令行还是通过 IDE?
    • 通过 IDE @Dina
    • 您使用的是 Eclipse 还是 IntelliJI? IDE 使用的 Project compile java version 和 JRE 检查了吗?
    • Eclipse,我将编辑我的问题以显示项目方面
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 2016-09-18
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多