我正在将应用程序从JDK 7迁移到JDK8。这样做的时候,com.sun.jdi.InvocationException occurred invoking method
当TestField
创建如下所示的实例时,我将遇到一个异常。调试时出现异常,找不到原因。我怀疑NullPointerException发生了,而InvocationException掩盖了它。我有以下Object方法在中被重写TestField
。
实用程序类下面的内容是commons-lang
jar的一部分。
HashCodeBuilder
EqualsBuilder
ToStringBuilder
public class TestField {
private String name;
private Rules rules;
public TestField(String name, Rules rules)
{ this.name = name;
this.rules = rules;
}
public String toString() {
return new ToStringBuilder(this)
.append("\n name", this.getName())
.append("\n Rules", this.getRules())
.append("\n ")
.toString();
}
public boolean equals(Object other) {
if ( !(other instanceof TestField) ) return false;
TestField castOther = (TestField) other;
return new EqualsBuilder()
.append(this.getName(), castOther.getName())
.append(this.getRules(), castOther.getRules())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(this.getName())
.append(this.getRules())
.toHashCode();
}
}
有没有人遇到过这样的问题。谁能帮我解决这个问题。谢谢。
尽管我还没有遇到这个特定问题,但是我有相当一部分迁移问题,这些问题是由很少的更改引起的,而这些更改被以后的过程掩盖了。
我本来建议您回溯并查看您的toString方法,但似乎已经有几个人遇到了同样的问题。toString或您的toHashCode是最可能的罪魁祸首。在坚果壳中,最有可能引发空指针异常,但会被com.sun.jdi.InvocationException错误掩盖。因此,如果您遇到了空指针异常,那么在此之前仍然有一些事情发生了,但被掩盖了。只需取出部分代码,然后逐步进行操作即可。
这是我认为可以解决此问题的其他问题和答案(我没有将其标记为重复项的声誉):
com-sun-jdi-invocationexception发生调用方法
还要看看这个问题,特别是Robin Green的评论,您是否尝试过以这种方式调试此代码?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句