如何解决Java错误:包javax.annotation不可见,Java版本9

6
当使用gradle构建以下Spring会话示例时:https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot-findbyusername.html,我遇到了与java.annotation模块相关的错误,请问有什么解决方法吗?
/spring-session/spring-session-core/src/main/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java:22: error: package javax.annotation is not visible
import javax.annotation.PostConstruct;
            ^
  (package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)
warning: unknown enum constant When.MAYBE
  reason: class file for javax.annotation.meta.When not found
1 error
1 warning

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':spring-session-core:compileJava'.
> Compilation failed; see the compiler error output for details.

我尝试在build.gradle中添加以下配置,但问题仍然存在。
tasks.withType(AbstractCompile) {
  options.compilerArgs += ["--add-modules", "java.xml.bind"]
}

tasks.withType(Test) {
  jvmArgs += ["--add-modules", "java.xml.bind"]
}

1
请使用 -add-module 命令添加 java.xml.ws.annotation 模块。 - Johannes Kuhn
2个回答

5

我遇到了同样的错误:

warning: unknown enum constant When.MAYBE
reason: class file for javax.annotation.meta.When not found

对我而言,这是因为我的lombok注解处理器未被项目依赖所识别。

最后,我将annotationProcessor作为项目依赖的一部分添加了如下:

dependencies {
  // ...
  compile('org.springframework.boot:spring-boot-starter-web')
  compileOnly('org.projectlombok:lombok')
  testCompile('org.springframework.boot:spring-boot-starter-test')
  // ...
  annotationProcessor('org.projectlombok:lombok')
}

-5

看起来这个示例还没有升级以支持Java9,降级到Java8它就可以正常运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接