只是为了检查它是否运行我试图用当前的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捕获并报告了一个例外。信息: java.lang.ClassNotFoundException:javax.annotation.PreDestroy java.lang.TypeNotPresentException:输入javax.annotation.PreDestroy 不存在
在 java.base / sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(未知 源)
答案 0 :(得分:1)
尝试使用以下VM标志运行您的应用程序:
--add-modules java.xml.ws.annotation