首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用--第8版发出警告

使用--第8版发出警告
EN

Stack Overflow用户
提问于 2017-09-04 15:28:21
回答 2查看 580关注 0票数 3

我有一个基于Java-9的独立项目,它有一个单独的类Main.java,当我在我的项目上使用版本9运行相同的工具时,在控制台中没有日志(假设这是预期的行为):

➜独立git:(主)✗jdeprscan --第9版。目录.:

这意味着,在我看来,代码中并没有使用不受欢迎的API。

然后,我对第8版也做了同样的尝试,尽管我没有再次获得任何Deprecated日志,但是控制台显示了项目的某些警告:

➜独立git:(主)✗jdeprscan --第8版。警告:未知枚举常量javax.annotation.Resource.AuthenticationType.CONTAINER警告:未知枚举常量javax.jws.soap.SOAPBinding.Use.LITERAL警告:未知枚举常数javax.jws.soap.SOAPBinding.Use.LITERAL警告

问:为什么对第8版而不是第9版有警告?为了在这里添加细节,例如在JavaSE8中,https://docs.oracle.com/javase/8/docs/api/javax/jws/WebParam.Mode.html#IN也没有被标记为弃用。

问:当我的代码不涉及这些枚举常量时,我为什么要得到这些警告呢?

编辑:我正在尝试使用JDK10(GA版本)和JDK11(EA),我可以在这里更新的是,唯一剩下的警告是

警告:未知枚举常量javax.jws.soap.SOAPBinding.Use.LITERAL

另外两个已经消退了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-05 02:49:57

谢谢您试用jdeprscan工具。

这是jdeprscan或底层工具机制中的一个错误。jdeprscan所做的第一件事是运行JDK中的所有类,以找出不推荐的内容。考虑到--release选项,它使用了一些内部javac表,这些表包含在该版本中存在的类库的表示形式,在本例中是JDK 8。我还没有对其进行调试,但我怀疑JDK中的其他部分引用了这些特定的枚举常量,而jdeprscan正在试图查找它们,以查看它们是否已不推荐使用。

但是,这些都是在javax.xml.wsjavax.xml.ws.annotation模块中定义的,它们不是默认根模块集的一部分,因此常规查找将找不到它们。这可能就是发出警告的原因。(请注意,javax.xml.wsjavax.xml.ws.annotation模块本身是不受欢迎的,但我不认为这与此问题有任何关系。)

我已经注册了JDK-8187155来跟踪这个问题。我认为这不应该影响jdeprscan的操作,除了增加噪音。但如果这会引起更多问题,请采取后续行动。

(还请注意,您的代码使用了JDK9API List.of,这意味着它是一个JDK9类文件。如果您要求jdeprscan扫描JDK 9类,但是提供了--release 8选项,那么它可能会发出警告。它也可能是一个错误,它没有发出这样的警告。)

票数 4
EN

Stack Overflow用户

发布于 2017-09-04 15:54:34

Java 9对标准库进行了主要的重新打包。这意味着,当您创建一个小型应用程序时,依赖库的数量要比Java 8中相应的要求少得多。第二个问题的答案是,应用程序的某些传递依赖项在您收到警告的包中使用注释。

同样,对于第一个问题,由于您没有显式列出包含这些注释类的所有jars,所以依赖扫描程序无法找到定义。该警告与弃用无关;它指出jdeprscan无法在未提供的类中找到定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46040200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档