com.sun.jdi.InvocationException在JDK8中调用了方法

我正在将我的应用程序从JDK 7迁移到JDK 8.在执行操作时,我遇到了一个exception,当创建如下所示的TestField实例时, com.sun.jdi.InvocationException occurred invoking methodcom.sun.jdi.InvocationException occurred invoking method 。 我在调试时遇到exception,无法找到原因。 我怀疑发生NullPointerException并且InvocationException会掩盖它。 我在TestField覆盖了以下Object方法。

下面的实用程序类是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是最有可能的罪魁祸首。 在坚果shell中,空指针exception很可能被抛出但被com.sun.jdi.InvocationException错误掩盖。 因此,如果你得到一个Null指针exception,那么在此之前仍然会发生一些事情但是被掩盖了。 只需取出部分代码,然后逐步进行处理。

以下是我认为将解决此问题的其他问题和答案(我没有将其标记为重复的声誉):

com-sun-jdi-invocationexception发生了调用方法

另外看看这个问题,尤其是Robin Green的评论,您是否尝试过调试此代码?

您可能想要检查您的类的hashcode()。 如果它以任何方式陷入nullPointerexception,Mockito将无法调用该方法。 例如,如果hashCode()已经使用传递给int的构造函数传递的参数实现,并且其中任何一个都为null。