在IntelliJ中集成我的自定义注释处理器jar时,获取java.lang.NoClassDefFoundError:



我有一个简单的应用程序"客户端";它使用了一些注释,其中包括我编写的注释处理器的.jar,应该使用JavaPoet将java类编写到控制台。以下是我在";客户端";应用程序:

repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
annotationProcessor fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
compile group: 'com.squareup', name: 'javapoet', version: '1.13.0'
}

我已经在项目中启用了注释处理器,并给出了该注释处理器的完全限定路径。然而,当我进行渐变构建时,注释处理器运行,我得到:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> java.lang.NoClassDefFoundError: com/squareup/javapoet/MethodSpec

不知道我在这里会做错什么。

我通过在其build.gradle:中包含以下内容,将注释处理器jar发布到本地maven,从而解决了这个特定问题

apply plugin: "maven-publish"
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}

正在执行:./gradlew publishToMavenLocal将其发布到maven local。然后,现在客户端项目的build.gradle如下:

repositories {
mavenCentral()
mavenLocal()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile fileTree(dir: 'libs', include: 'AnnotationProcessor-1.0-SNAPSHOT.jar')
annotationProcessor('org.example:AnnotationProcessor:1.0-SNAPSHOT')
}

这解决了这个问题。

最新更新