gpt4 book ai didi

java - com.sun.faces.renderkit.html_basic.TextRenderer 存在哪些 Java API 替换(如果有)

转载 作者:行者123 更新时间:2023-11-29 06:52:34 25 4
gpt4 key购买 nike

在一个 Java web 项目(在 Tomcat & JSF & Spring 上运行),编写了一个自定义渲染器来调用自定义转换器,即使要转换的值是 null,正如所解释的这里:JSF Custom Converter not called on null value

但是,SonarQube 扫描在 import 行检测到一个问题,即:

import com.sun.faces.renderkit.html_basic.TextRenderer;

因为它是一个 com.sun.* 包而不是标准的 Java API 包。规则描述指出:

Classes from "sun.*" packages should not be used (squid:S1191)

Classes in the sun.* or com.sun.* packages are considered implementation details, and are not part of the Java API.

They can cause problems when moving to new versions of Java because there is no backwards compatibility guarantee. Similarly, they can cause problems when moving to a different Java vendor, such as OpenJDK.

Such classes are almost always wrapped by Java API classes that should be used instead.

Noncompliant Code Example

import com.sun.jna.Native;     // Noncompliant
import sun.misc.BASE64Encoder; // Noncompliant

这很有道理,但我找不到此类的 Java API 包装器,只能找到该类所在的源代码和包...在这种情况下应采取什么适当的措施?

最佳答案

我认为这是一种误报。 com.sun.faces 的用法是内部特定于实现的类的用法,但用于 JSF 而不是 JDK。这些类不会被其他 JVM 或某些新版本的 JDK 删除。您只需将您的代码绑定(bind)到 Sun(甲骨文)的 JSF 实现,这对您来说可能合适也可能不合适。

GitHub 查看该规则的代码,看起来可以配置以避免此类误报,但将 exclude 属性设置为逗号分隔列表。我不确定您可以在 UI 中的什么地方执行此操作,但是 https://docs.sonarqube.org/display/SONARQUBE50/Configuring+Rules可能是一个起点。

关于java - com.sun.faces.renderkit.html_basic.TextRenderer 存在哪些 Java API 替换(如果有),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42838075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com