如何在Java 8上编译Eclipse库

bq3bfh9z  于 2022-11-04  发布在  Eclipse
关注(0)|答案(2)|浏览(163)

让我从我看到的错误开始,然后我将解释以下情况:

<p style="color:red">
EclipseJDTUtil.java:[3,34] cannot access org.eclipse.core.resources.IProject
  bad class file: C:\Users\ram\.m2\repository\org\eclipse\platform\org.eclipse.core.resources\3.15.0\org.eclipse.core.resources-3.15.0.jar(org/eclipse/core/resources/IProject.class)
    class file has wrong version 55.0, should be 52.0
    Please remove or make sure it appears in the correct subdirectory of the classpath.
</p>

我的项目依赖于***org.eclipse.jdt.core***库。

<dependency>
        <groupId>org.eclipse.jdt</groupId>
        <artifactId>org.eclipse.jdt.core</artifactId>
        <version>3.23.0</version>
    </dependency>

我用JRE 8构建了我的项目。我用Maven插件在编译时指向正确的版本,如下所示。

<plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
</plugin>

这几天一切都很好,但突然从过去的几天,我看到下面的错误。我知道这个库现在可以使用在java 11上编译的源代码,这给我的项目带来了问题。但是,这怎么可能呢?当项目源代码是java 8时,不应该下载java 11的依赖项。
我不是在一个位置更新我的整个项目到新的java版本!
我需要的是在java8上编译的eclipse库。我应该如何在maven build上得到它们?什么配置才能让它成为可能?

编辑1:(对Andreas评论的回应):

@Andreas:太棒了,正如你正确指出的,它正在拉org.eclipse.core.resources:3.15.0,如错误所示.如您所建议,我已经添加了版本为“资源”如下:

<dependencyManagement>
<dependencies>
  <dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.core.resources</artifactId>
    <version>3.12.0</version>
    <scope>compile</scope>
  </dependency>
</dependencies>

在我maven构建后,我现在看到下面的错误。

<p style="color:red">
EclipseJDTUtil.java:[8,32] cannot access org.eclipse.core.runtime.IPath
  bad class file: C:\Users\ram\.m2\repository\org\eclipse\platform\org.eclipse.equinox.common\3.15.0\org.eclipse.equinox.common-3.15.0.jar(org/eclipse/core/runtime/IPath.class)
    class file has wrong version 55.0, should be 52.0
</p>

我还附上了依赖关系层次结构屏幕截图。
第一次

58wvjzkj

58wvjzkj1#

根据@KC_911723和@grubi的答案,您可以使用以下配置:

<dependencies>
    <dependency>
        <groupId>org.eclipse.jdt</groupId>
        <artifactId>org.eclipse.jdt.core</artifactId>
        <version>3.23.0</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <!-- declare the exclusion here -->
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.core.runtime</artifactId>
            </exclusion>
            <exclusion>
                <!-- declare the exclusion here -->
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.equinox.common</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.platform</groupId>
        <artifactId>org.eclipse.core.runtime</artifactId>
        <version>3.13.0</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <!-- declare the exclusion here -->
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.equinox.common</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.platform</groupId>
        <artifactId>org.eclipse.equinox.common</artifactId>
        <version>3.14.100</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

或使用以下Gradle配置:

dependencies {
    implementation ('org.eclipse.jdt:org.eclipse.jdt.core:3.23.0'){
        exclude group: 'org.eclipse.platform', module: 'org.eclipse.core.runtime'
        exclude group: 'org.eclipse.platform', module: 'org.eclipse.equinox.common'
    }
    implementation ('org.eclipse.platform:org.eclipse.core.runtime:3.13.0'){
        exclude group: 'org.eclipse.platform', module: 'org.eclipse.equinox.common'
    }
    implementation 'org.eclipse.platform:org.eclipse.equinox.common:3.14.100'
}
gudnpqoy

gudnpqoy2#

我刚刚遇到了一个非常类似的问题。设法让它重新工作,从降级

<dependency>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>org.eclipse.jdt.core</artifactId>
            <version>3.27.0</version>
        </dependency>

(直到几周前,它在java8下运行良好):

<dependency>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>org.eclipse.jdt.core</artifactId>
            <version>3.10.0</version>
        </dependency>

这看起来仍然可以很好地与java8一起工作,至少对于我在项目中使用的AST功能来说是这样。

相关问题