我在NetBeans中创建了一个项目,下载了一些Bouncy城堡的第三方罐子,它提供了一些java加密API。我还下载了源代码并按照包名将它们放在src文件夹下。但是我的项目中的一些java文件显示为红色且有错误。这是一个如 -
getparams() in org.bouncycastle.jce.provider.JCEECPrivateKey cannot implement
getParams() in rg.bouncycastle.jce.interfaces.ECKey
found : java.security.spec.ECParameterSpec
required: rg.bouncycastle.jce.ECParameterSpec
但奇怪的是,当我从NetBeans编译代码时,编译成功并创建了最终的jar文件。但是,汇编说明如下:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
我的问题是:即使某些文件似乎有错误,为什么编译仍在进行?我能否将这些视为良性?
如何在NetBeans中使用-Xlint进行编译,因为我通过单击项目和“清理并生成”选项进行编译。
答案 0 :(得分:1)
看起来你有命名冲突。你可能有
import java.security.spec.*;
import rg.bouncycastle.jce.*;
但两个包都定义ECParameterSpec
。
如果这是您的问题,您可以使用rg.bountycaslte.jce.ECParameterSpec myvar = ...
显式定义变量类型,也可以添加导入语句import rg.bouncycastle.jce.ECParameterSpec;
以指定您真正想要的那个。
答案 1 :(得分:0)
同意@Harry Joy,弃用不是错误。如果可以,您必须避免使用弃用的方法或API。因为我们不知道Oracle何时会在JDK的下一版本中删除这个已弃用的方法。
如果要在NetBeans中使用-Xlint:deprecation进行编译,可以右键单击项目节点(在检查器窗口中),然后选择“属性”。
在“属性”窗口中,选择“生成”>编译。请在“附加编译器选项”字段中搜索,然后在此字段中输入Xlint:deprecation。完成后,您可以按OK按钮。
顺便说一句,您可以传递该字段中的任何其他选项,例如“Xlint:unchecked”:)