首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JDK14 14-SpringBoot-Maven- Cassandra:“无法初始化类org.codehaus.groovy.vmplugin.v7.Java7”异常仅具有Cassandra依赖性

JDK14 14-SpringBoot-Maven- Cassandra:“无法初始化类org.codehaus.groovy.vmplugin.v7.Java7”异常仅具有Cassandra依赖性
EN

Stack Overflow用户
提问于 2020-10-25 20:31:16
回答 1查看 6.9K关注 0票数 2

在我开始之前:是的,在这方面也有类似的问题,但是没有一个问题和我有相同的环境和设置(大部分问题都与gradle构建相关,很多问题甚至与Spring无关)

此外,这令人困惑,因为只有在尝试使用Spring的Cassandra依赖项时才会发生这种情况:

代码语言:javascript
运行
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>

但是,每当我尝试启动应用程序时,每次都会运行下一个异常!

代码语言:javascript
运行
复制
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

我不明白为什么会发生这种情况,因为我甚至没有使用Gradle!我在使用Maven,就像在我的Spring项目中一样,但是只有当我添加Spring数据Cassandra依赖项时,这个问题才会发生。

我认为在pom文件中添加org.codehaus.groovy依赖项可以解决这个问题,但仍然不能工作!

正如标题所述,我在MacOs上安装了JDK 14。我的JDK与任何非cassandra spring引导项目中的任何其他依赖项一样工作。

spring-data-cassandra是否需要另一个依赖项?只能和Gradle一起用吗?

如果有人能帮我个忙,我会非常感激的。我不知道这会是什么,卡桑德拉的支持在网络上是非常有限的。

感谢您的阅读!

这是我的POM文件:

代码语言:javascript
运行
复制
<?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.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cassandra</groupId>
    <artifactId>example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>example</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>3.0.6</version>
            <type>pom</type>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

下面是异常的完整堆栈跟踪:

代码语言:javascript
运行
复制
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
    at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43)
    at org.codehaus.groovy.reflection.GroovyClassValueFactory.<clinit>(GroovyClassValueFactory.java:35)
    at org.codehaus.groovy.reflection.ClassInfo.<clinit>(ClassInfo.java:107)
    at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:95)
    at org.codehaus.groovy.reflection.ReflectionCache.<clinit>(ReflectionCache.java:39)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:209)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
    at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.<init>(GroovyBeanDefinitionReader.java:150)
    at org.springframework.boot.BeanDefinitionLoader.<init>(BeanDefinitionLoader.java:85)
    at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738)
    at org.springframework.boot.SpringApplication.load(SpringApplication.java:681)
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at com.cassandra.example.ExampleApplication.main(ExampleApplication.java:21)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
2020-10-25 14:00:14.948 ERROR 5918 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed
EN

Stack Overflow用户

回答已采纳

发布于 2020-10-25 21:54:28

看起来依赖项之一是使用groovy的旧版本。如果使用命令检查依赖树:

代码语言:javascript
运行
复制
 mvn dependency:tree -Dincludes=org.codehaus.groovy

您可以看到它的依赖关系:

代码语言:javascript
运行
复制
[INFO] com.example:demo:jar:0.0.1-SNAPSHOT
[INFO] \- org.springframework.boot:spring-boot-starter-data-cassandra:jar:2.3.4.RELEASE:compile
[INFO]    \- org.springframework.data:spring-data-cassandra:jar:3.0.4.RELEASE:compile
[INFO]       \- com.datastax.oss:java-driver-core:jar:4.6.1:compile
[INFO]          \- org.apache.tinkerpop:gremlin-driver:jar:3.4.5:compile
[INFO]             +- org.codehaus.groovy:groovy:jar:indy:2.5.7:compile
[INFO]             \- org.codehaus.groovy:groovy-json:jar:indy:2.5.7:compile

一个临时的解决方案是排除这些依赖项,并将它们添加到更新版本中:

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-cassandra</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-json</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy</artifactId>
        <version>2.5.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-json</artifactId>
    <version>2.5.13</version>
</dependency>
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64528469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档