java - java.lang.NoClassDefFoundError: antlr/collections/AST 设置配置时.all.transitive = false
问题描述
我正在使用 gradle 构建一个带有依赖项的胖 jar。原来的胖罐子是 75MB。通过设置以下内容,我能够将大小减小到 10MB:
configurations.all {
transitive = false
}
但是,现在当我运行 gradle 构建时,我收到了一个新错误:
* What went wrong:
Execution failed for task ':service-common:metrics:checkstyleMain'.
java.lang.NoClassDefFoundError: antlr/collections/AST
这是我的新构建脚本:
buildscript {
repositories {
mavenCentral()
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:5.2.0"
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release"
}
}
plugins {
id 'java'
id 'maven-publish'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'maven'
apply plugin: 'antlr'
checkstyleMain.exclude '**/**Test.java'
build_docker.enabled = false
repositories {
mavenLocal()
maven {
url = 'https://repository.cloudera.com/artifactory/cloudera-repos/'
}
mavenCentral()
}
configurations.all {
transitive = false
}
dependencies {
antlr "org.antlr:antlr4:4.7.1"
runtime "org.antlr4:antlr4-runtime:4.7.1"
annotationProcessor 'org.projectlombok:lombok:1.18.6'
implementation (
'io.micrometer:micrometer-core:1.6.4',
'org.slf4j:slf4j-api:1.7.5',
'org.slf4j:slf4j-log4j12:1.7.5',
'org.apache.logging.log4j:log4j-api:2.12.1'
)
compile (
'com.fasterxml.jackson.core:jackson-core:2.10.4',
'com.fasterxml.jackson.core:jackson-annotations:2.10.4',
'com.fasterxml.jackson.core:jackson-databind:2.10.4',
'org.apache.commons:commons-lang3:3.8.1',
'org.json:json:20180813',
'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.10.0',
'com.google.guava:guava:19.0',
'org.apache.kafka:kafka-clients:2.4.1',
'org.yaml:snakeyaml:1.2+',
'org.apache.logging.log4j:log4j-slf4j-impl:2.12.1',
'org.apache.logging.log4j:log4j-core:2.12.1',
'org.apache.logging.log4j:log4j-api:2.12.1'
)
compileOnly 'org.projectlombok:lombok:1.18.6'
testImplementation (
'org.mockito:mockito-core:2.22.0',
'junit:junit:4.12',
'org.assertj:assertj-core:3.19.0',
'org.mockito:mockito-all:1.10.19',
'com.google.code.findbugs:jsr305:3.0.2',
'net.bytebuddy:byte-buddy:1.10.20'
)
}
如您所见,我已尝试直接启用 antltr 插件。但我仍然得到类未找到错误。我错过了什么吗?
解决方案
我找到了答案。我不得不跑
gradle dependencies
查看需要哪些库来检查样式。我手动添加了这些库并且它有效。
推荐阅读
- python - 如何使用 Jinja 将日期字符串传递到 SQL 查询中
- python - 无法使用 pip 在 Ubuntu 20.04 LTS 上安装 Tensorflow 1.x
- javascript - Throw er:如果端口和地址正确,为什么会抛出这个?
- sqlite - sqlite 和 better-sqlite3 实现之间的区别
- c# - 如何在 C# 中连接查询结果
- ruby-on-rails - Rails 4:如何从配置控制器添加动态全局变量
- python - Numba:“此错误通常是由于传递了指定函数不支持的类型的参数引起的”
- javascript - 为什么 Redis 中间件会破坏我的路由?
- sql - SQL 帮助:异常报告 - 扩展 2
- html - 为什么我的 CSS 不能在索引以外的其他页面上工作?