org/gradle/internal/service/DefaultServiceRegistry

文章描述了在使用ThingsBoard的gradle-maven-plugin时遇到的错误,由于找不到org.gradle.internal.service.DefaultServiceRegistry类,导致编译失败。解决方案是检查gradle版本并确保gradle-base-services-7.1.1.jar包含所需类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译 thingsboard 时报错

Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing while executing org.thingsboard:gradle-maven-plugin:1.0.11:invoke: org/gradle/internal/service/DefaultServiceRegistry
 

原因分析及解决办法如下

-----------------------------------------------------
realm =    plugin>org.thingsboard:gradle-maven-plugin:1.0.11
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/D:/repo/org/thingsboard/gradle-maven-plugin/1.0.11/gradle-maven-plugin-1.0.11.jar
urls[1] = file:/D:/repo/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
urls[2] = file:/D:/repo/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
urls[3] = file:/D:/repo/org/codehaus/plexus/plexus-utils/3.2.1/plexus-utils-3.2.1.jar
urls[4] = file:/D:/repo/org/codehaus/plexus/plexus-interpolation/1.25/plexus-interpolation-1.25.jar
urls[5] = file:/D:/repo/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar
urls[6] = file:/D:/repo/org/apache/maven/maven-builder-support/3.8.2/maven-builder-support-3.8.2.jar
urls[7] = file:/D:/repo/org/apache/maven/resolver/maven-resolver-util/1.6.3/maven-resolver-util-1.6.3.jar
urls[8] = file:/D:/repo/org/apache/maven/shared/maven-shared-utils/3.3.4/maven-shared-utils-3.3.4.jar
urls[9] = file:/D:/repo/commons-io/commons-io/2.6/commons-io-2.6.jar
urls[10] = file:/D:/repo/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.4/org.eclipse.sisu.inject-0.3.4.jar
urls[11] = file:/D:/repo/com/google/inject/guice/4.2.2/guice-4.2.2-no_aop.jar
urls[12] = file:/D:/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
urls[13] = file:/D:/repo/com/google/guava/guava/25.1-android/guava-25.1-android.jar
urls[14] = file:/D:/repo/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
urls[15] = file:/D:/repo/org/checkerframework/checker-compat-qual/2.0.0/checker-compat-qual-2.0.0.jar
urls[16] = file:/D:/repo/com/google/errorprone/error_prone_annotations/2.1.3/error_prone_annotations-2.1.3.jar
urls[17] = file:/D:/repo/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar
urls[18] = file:/D:/repo/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar
urls[19] = file:/D:/repo/org/codehaus/plexus/plexus-component-annotations/2.1.0/plexus-component-annotations-2.1.0.jar
urls[20] = file:/D:/repo/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
urls[21] = file:/D:/repo/org/gradle/gradle-tooling-api/7.1.1/gradle-tooling-api-7.1.1.jar
urls[22] = file:/D:/repo/org/codehaus/groovy/groovy-all/3.0.9/groovy-all-3.0.9.pom
urls[23] = file:/D:/repo/org/codehaus/groovy/groovy/3.0.9/groovy-3.0.9.jar
urls[24] = file:/D:/repo/org/codehaus/groovy/groovy-ant/3.0.9/groovy-ant-3.0.9.jar
urls[25] = file:/D:/repo/org/apache/ant/ant/1.10.11/ant-1.10.11.jar
urls[26] = file:/D:/repo/org/apache/ant/ant-junit/1.10.11/ant-junit-1.10.11.jar
urls[27] = file:/D:/repo/org/apache/ant/ant-launcher/1.10.11/ant-launcher-1.10.11.jar
urls[28] = file:/D:/repo/org/apache/ant/ant-antlr/1.10.11/ant-antlr-1.10.11.jar
urls[29] = file:/D:/repo/org/codehaus/groovy/groovy-astbuilder/3.0.9/groovy-astbuilder-3.0.9.jar
urls[30] = file:/D:/repo/org/codehaus/groovy/groovy-cli-picocli/3.0.9/groovy-cli-picocli-3.0.9.jar
urls[31] = file:/D:/repo/info/picocli/picocli/4.6.1/picocli-4.6.1.jar
urls[32] = file:/D:/repo/org/codehaus/groovy/groovy-console/3.0.9/groovy-console-3.0.9.jar
urls[33] = file:/D:/repo/org/codehaus/groovy/groovy-datetime/3.0.9/groovy-datetime-3.0.9.jar
urls[34] = file:/D:/repo/org/codehaus/groovy/groovy-docgenerator/3.0.9/groovy-docgenerator-3.0.9.jar
urls[35] = file:/D:/repo/com/thoughtworks/qdox/qdox/1.12.1/qdox-1.12.1.jar
urls[36] = file:/D:/repo/org/codehaus/groovy/groovy-groovydoc/3.0.9/groovy-groovydoc-3.0.9.jar
urls[37] = file:/D:/repo/com/github/javaparser/javaparser-core/3.23.0/javaparser-core-3.23.0.jar
urls[38] = file:/D:/repo/org/codehaus/groovy/groovy-groovysh/3.0.9/groovy-groovysh-3.0.9.jar
urls[39] = file:/D:/repo/jline/jline/2.14.6/jline-2.14.6.jar
urls[40] = file:/D:/repo/org/codehaus/groovy/groovy-jmx/3.0.9/groovy-jmx-3.0.9.jar
urls[41] = file:/D:/repo/org/codehaus/groovy/groovy-json/3.0.9/groovy-json-3.0.9.jar
urls[42] = file:/D:/repo/org/codehaus/groovy/groovy-jsr223/3.0.9/groovy-jsr223-3.0.9.jar
urls[43] = file:/D:/repo/org/codehaus/groovy/groovy-macro/3.0.9/groovy-macro-3.0.9.jar
urls[44] = file:/D:/repo/org/codehaus/groovy/groovy-nio/3.0.9/groovy-nio-3.0.9.jar
urls[45] = file:/D:/repo/org/codehaus/groovy/groovy-servlet/3.0.9/groovy-servlet-3.0.9.jar
urls[46] = file:/D:/repo/org/codehaus/groovy/groovy-sql/3.0.9/groovy-sql-3.0.9.jar
urls[47] = file:/D:/repo/org/codehaus/groovy/groovy-swing/3.0.9/groovy-swing-3.0.9.jar
urls[48] = file:/D:/repo/org/codehaus/groovy/groovy-templates/3.0.9/groovy-templates-3.0.9.jar
urls[49] = file:/D:/repo/org/codehaus/groovy/groovy-test/3.0.9/groovy-test-3.0.9.jar
urls[50] = file:/D:/repo/junit/junit/4.13.2/junit-4.13.2.jar
urls[51] = file:/D:/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
urls[52] = file:/D:/repo/org/codehaus/groovy/groovy-test-junit5/3.0.9/groovy-test-junit5-3.0.9.jar
urls[53] = file:/D:/repo/org/junit/jupiter/junit-jupiter-api/5.7.2/junit-jupiter-api-5.7.2.jar
urls[54] = file:/D:/repo/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar
urls[55] = file:/D:/repo/org/junit/platform/junit-platform-launcher/1.7.2/junit-platform-launcher-1.7.2.jar
urls[56] = file:/D:/repo/org/junit/platform/junit-platform-engine/1.7.2/junit-platform-engine-1.7.2.jar
urls[57] = file:/D:/repo/org/junit/platform/junit-platform-commons/1.7.2/junit-platform-commons-1.7.2.jar
urls[58] = file:/D:/repo/org/junit/jupiter/junit-jupiter-engine/5.7.2/junit-jupiter-engine-5.7.2.jar
urls[59] = file:/D:/repo/org/codehaus/groovy/groovy-testng/3.0.9/groovy-testng-3.0.9.jar
urls[60] = file:/D:/repo/org/testng/testng/7.4.0/testng-7.4.0.jar
urls[61] = file:/D:/repo/com/beust/jcommander/1.78/jcommander-1.78.jar
urls[62] = file:/D:/repo/org/webjars/jquery/3.5.1/jquery-3.5.1.jar
urls[63] = file:/D:/repo/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[project>org.thingsboard.transport:http:3.5.2-SNAPSHOT, parent: ClassRealm[maven.api, parent: null]]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:169)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    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)
Caused by: java.lang.NoClassDefFoundError: org/gradle/internal/service/DefaultServiceRegistry
    at org.gradle.tooling.GradleConnector.newConnector (GradleConnector.java:86)
    at org.fortasoft.maven.plugin.gradle.GradleMojo.execute (GradleMojo.java:202)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    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)
Caused by: java.lang.ClassNotFoundException: org.gradle.internal.service.DefaultServiceRegistry
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
    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 org.gradle.tooling.GradleConnector.newConnector (GradleConnector.java:86)
原因: java.lang.ClassNotFoundException: version
 

主要原因就是 找不到类 org/gradle/internal/service/DefaultServiceRegistry

通过分析 gradle-7.1.1 lib包里面关于gradle的jar包, 发现此类存放在 gradle-base-services-7.1.1.jar 包中

<think>嗯,用户遇到了一个关于Gradle的`org.gradle.api.internal.plugins.DefaultConvention`错误,想要知道原因和解决办法。首先,我需要回忆一下Gradle的相关知识。记得在Gradle的版本升级中,尤其是从旧版本迁移到新版本时,API会有变化,比如`compile`被替换成`implementation`或者`api`,这可能跟插件或DSL的变更有关。 用户提到的错误涉及到`DefaultConvention`,这可能与Gradle的约定属性(convention)有关。在旧版本的Gradle中,插件可能会使用`convention`来添加扩展属性,但新版本中可能已经废弃了这个方法,改用扩展(extensions)或者新的DSL配置方式。比如,Gradle 4.x到5.x的升级中,很多旧的API被标记为过时,甚至移除。 然后,我需要检查用户提供的引用内容。引用[2]提到Gradle插件3.0之后`compile`被替换,这可能意味着用户的项目还在使用旧语法,导致兼容性问题。引用[1]是关于调整内存设置的,虽然可能与错误无关,但有时候内存不足也可能引发奇怪的错误,不过这里可能不是主要原因。 可能的错误场景是,用户的项目中某个插件或构建脚本还在使用旧的`convention`方法,而新版的Gradle已经不再支持。例如,Android插件在旧版本中使用`android`闭包配置,而新版本可能使用`android {}`扩展的方式,如果用户脚本中有过时的配置方法,就会触发这个错误。 解决办法可能包括:升级Gradle插件版本,修改构建脚本中的过时API,检查第三方插件是否兼容当前Gradle版本。比如,将`convention`替换为扩展注册,或者更新相关插件的版本。同时,查看详细的堆栈跟踪,找到具体哪一行代码触发了错误,然后针对性地修改。 另外,用户可能需要检查Gradle Wrapper的版本,确保使用的Gradle版本与插件兼容。例如,如果插件需要Gradle 6.x以上,而项目还在用5.x,就会有问题。还有清理项目缓存,有时候旧的缓存会导致问题,使用`./gradlew clean`或者删除`.gradle`目录可能会有帮助。 需要提醒用户检查构建脚本中的插件部分,比如是否正确地应用了插件,或者是否有第三方插件未更新。例如,引用[3]提到的依赖管理,如果依赖的插件版本过旧,可能需要更新到适配新Gradle的版本。同时,引用[5]提到的优化库可能不相关,但用户如果有使用相关库,也需要检查兼容性。 总结可能的解决步骤:1. 升级Gradle插件和Gradle版本;2. 替换过时的API和语法;3. 检查第三方插件兼容性;4. 清理缓存;5. 调整内存设置(虽然可能性较低)。需要用户提供具体的错误堆栈和构建脚本片段,才能更精准定位问题。</think>关于`org.gradle.api.internal.plugins.DefaultConvention`错误的原因和解决方案,以下是逐步分析: --- ### 错误原因分析 1. **API过时** Gradle 5.0+ 移除了旧版`Convention`相关API[^2],若插件或构建脚本依赖`DefaultConvention`类(如通过`project.convention`访问),在Gradle 6.x及以上版本会触发此错误。 2. **插件兼容性问题** 第三方插件未适配新版Gradle,仍调用废弃的`Convention`方法,例如旧版Android插件或自定义插件。 3. **语法不兼容** 构建脚本中使用旧语法(如`compile`替换为`implementation`未完成[^2]),间接引发类加载冲突。 --- ### 解决方案步骤 1. **升级Gradle及插件版本** 修改`gradle-wrapper.properties`中Gradle版本为**6.8+**,并在`build.gradle`中更新插件: ```groovy plugins { id 'com.android.application' version '7.0.0' // Android插件示例 id 'org.jetbrains.kotlin.jvm' version '1.6.10' } ``` 2. **替换废弃的API调用** 若使用自定义插件,将`project.convention`替换为扩展注册: ```groovy // 旧方式(已废弃) project.convention.plugins.java.sourceSets = ... // 新方式(使用扩展) project.extensions.configure(JavaPluginExtension) { sourceSets { ... } } ``` 3. **检查第三方插件** 在插件文档或仓库中确认其兼容的Gradle版本。例如,旧版`android-maven`插件需替换为`maven-publish`。 4. **清理构建缓存** 执行以下命令清除缓存: ```bash ./gradlew clean --rerun-tasks rm -rf ~/.gradle/caches/ ``` 5. **调整Gradle内存(可选)** 若伴随内存错误,在`gradle.properties`中增加: ```properties org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g ``` 参考内存配置优化[^1]。 --- ### 示例修复后的配置 ```groovy // build.gradle (项目级) buildscript { repositories { google(); mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.2.1' // 确保插件版本兼容 } } // build.gradle (模块级) plugins { id 'com.android.application' } android { compileSdk 32 // 使用新版DSL代替旧版convention配置 sourceSets { main { java.srcDirs = ['src/main/java'] } } } dependencies { implementation 'androidx.appcompat:appcompat:1.4.1' // 使用implementation而非compile } ``` ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值