我正在尝试将现有的以Java8编写的非模块化多项目gradle应用程序升级到Java11。当我切换到Jdk11时,由于其中一个子项目中带有“ javax.annotation:javax.annotation-api:1.3.2”的“拆分包”问题,我开始获取“ java.lang.NoClassDefFoundError:javax / annotation / Generated” ”和“ com.google.code.findbugs:jsr305:1.3.9”。
据我了解,对于类路径中的jar而言,拆分包不应该成为问题,并且这两个jar都在类路径中。我不确定为什么会收到此错误。请帮助我了解我要去哪里错了。
在搜索split软件包后,我遇到了以下2种解决方案来解决此问题:
compileJava {
doFirst {
def jsr305 =
classpath.filter{it.name.contains('jsr305')}.asPath
classpath = classpath.filter{!it.name.contains('jsr305')}
options.compilerArgs += [
'--patch-module', "java.annotation=$jsr305"
]
}
}
我认为应该存在module.info文件,以使--patch-module正常工作。
我不想迁移到模块化结构。
是否可以在不模块化应用程序的情况下解决错误?