java - 使用 Java9 运行现有应用程序会导致 Guice Injector 出现 PreDestroy 错误

标签 java guice java-9

为了检查它是否运行,我尝试使用当前的 Oracle JDK9 (9.0.1) 运行 Java8 编译的应用程序。启动 guice 时,会收到 javax.annotation.PreDestroy 的 ClassNotFoundExceptionf,该异常包含在类路径上的 jar 中。 我正在使用 JSR-250 扩展:http://code.mycila.com/guice/

在 Java8 中它照常运行。所以我想知道为什么 JDK 9 不向后兼容运行时环境。我是否错过了一些让它发挥作用的东西?或者我是否必须配置模块路径并在 Java9 中编译我的应用程序才能使其与 Java9 运行时一起运行?

这是堆栈跟踪:(完整部分在这里: https://pastebin.ca/3894786 )

c.g.i.Guice An exception was caught and reported. Message: java.lang.ClassNotFoundException: javax.annotation.PreDestroy java.lang.TypeNotPresentException: Type javax.annotation.PreDestroy not present

at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(Unknown Source)

最佳答案

尝试使用以下 VM 标志运行您的应用程序:

--add-modules java.xml.ws.annotation

关于java - 使用 Java9 运行现有应用程序会导致 Guice Injector 出现 PreDestroy 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46905547/

相关文章:

java - Android 从操作栏中为另一个 Activity 加注星标

java - 使用 guice 在 java 中创建 Singleton

java - Juice 注入(inject)器抛出空指针异常

java - 如何在 java 9 中声明模块

Java 9 的 Maven 编译问题

java - 添加多行注释时如何在 Eclipse 中禁用自动星号(插入星号)?

java - 接口(interface)中的方法可见性

java - 如何从不同的范围创建对象

Java 9 + Maven : What happens if two dependencies export the same module?

java - 使用 Java 读取结构化二进制文件的最佳方法