com.sun.net.ssl.internal.ssl.Provider()的遗留Java代码使用
我正在使用2003年的一些代码。有对以下类别的引用:com.sun.net.ssl.internal.ssl.Provider()的遗留Java代码使用,java,ssl,provider,legacy,Java,Ssl,Provider,Legacy,我正在使用2003年的一些代码。有对以下类别的引用: new com.sun.net.ssl.internal.ssl.Provider() 它导致了一个错误: 访问限制:由于对所需库/library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jsse.jar的限制,无法访问类型提供程序 有人对使用此类的合适替代方案有什么建议吗?您可以在Eclipse首选项Java->Compiler->Errors/Warnings->
new com.sun.net.ssl.internal.ssl.Provider()
它导致了一个错误:
访问限制:由于对所需库/library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/jre/lib/jsse.jar的限制,无法访问类型提供程序
有人对使用此类的合适替代方案有什么建议吗?您可以在Eclipse首选项
Java->Compiler->Errors/Warnings->弃用和受限制的API中将其转化为警告或非事件。请注意,正如其他人所说,这不是最佳做法,当您有其他选择时应避免使用。大多数情况下,您实际上不需要自己创建或获取提供商实例。正如政府所说:
通用应用程序不应请求加密服务
来自特定提供商。即:
getInstance("...", "SunJCE"); // not recommended
vs.
getInstance("..."); // recommended
此外,如果提供程序有重载参数,则它倾向于采用字符串或实例,但字符串(名称)可能更常见。(传递实例有时可能很有用,例如对于某些PKCS#11配置,但这并不常见。)
这应该是有用的
如果您确实想获得特定实例,可以使用Security.getProvider(name)
。您将在提供者文档中找到合适的名称。扔掉那行代码。同时扔掉对com.sun.net.ssl
包及其子包的任何引用:修复导入,使它们引用javax.net.ssl中的类。
这是JDK1.4之前的代码,从JSSE单独下载的时候开始。我不知道那个类,但我可以阅读“ssl”。如果这是安全套接字层,请考虑很少有理由像这样手动地手动提供提供者。代码是什么?是的,你可以,但你通常不应该,至少在全球范围内不应该。为什么要否决这个?这是一种处理遗留代码的可行方法。作为一般性建议,我认为这很危险。作为一个临时解决方案,它可以是好的。我喜欢你的编辑并删除了否决票。