![](/img/trans.png)
[英]Why does Java EE 6 require equals() and hashCode() to be implemented for Resource Adapters?
[英]SonarLint alerting for a java:S1206 issue but hashCode and equals are implemented
我在 Eclipse 上有一个小型 Java 项目,我喜欢使用 SonarLint 检查代码异味,但是今天我遇到了一个奇怪的java:S1206
问题,它说"equals(Object obj)" and "hashCode()" should be overridden in pairs
. 这个问题是在一个长期模型对象上报告的,该对象正确覆盖了equals
和hashCode
方法。
我已经尝试重新运行 SonarLint 几次,但结果是一样的。 我所做的最后修改是更新一些依赖项版本和导入。
我使用 Eclipse 2019-12 (4.14.0) Build id: 20191212-1212 和 SonarLint for Eclipse version 5.0.0.15138。 Eclipse 使用 JDK 1.8.0_231 运行。
项目代码可以在我的ISS-Tracker GitHub 存储库中找到。
问题似乎与我用来执行 Eclipse 的 Java 虚拟机 (JVM) 版本有关。 我修改了eclipse.ini
文件以使用 JVM 11 执行 Eclipse,SonarLint 没有报告任何问题。 可以肯定的是,我已经删除了配置,重新启动了 Eclipse,重新执行了 SonarLint 报告,并且再次出现了 java:S1206 问题。
对于那些面临相同问题(或类似问题)的人:
下载 Java 虚拟机 11;
在您的机器上安装JVM并注释(复制)安装目录(例如/opt/openjdk/jdk-11.0.2
);
在文本编辑器上打开$ECLIPSE_HOME/eclipse.ini
文件;
添加以下行,用带注释的安装目录替换<JAVA_HOME>
;
-vm
<JAVA_HOME>/bin
eclipse.ini
文件应如下所示:
重新启动 Eclipse。
通过右键单击项目文件夹,菜单SonarLint
,项目Analyze
再次运行 SonarLint 报告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.