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

sri*_*har 5 java string object java-ee

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

实用程序类下面是commons-langjar 的一部分.

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();
}   
}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这样的问题.有谁可以帮我解决同样的问题.谢谢.

Bli*_*gle 2

尽管我没有遇到这个特定问题,但我也遇到过相当多的迁移问题,这些问题是由后来的流程掩盖的微小变化引起的。

我本来打算建议回溯并查看您的 toString 方法,但似乎有几个人已经遇到了同样的问题;toString 或 toHashCode 是最有可能的罪魁祸首。简而言之,空指针异常很可能被抛出,但被 com.sun.jdi.InitationException 错误掩盖。因此,如果您遇到空指针异常,则很可能在此之前发生过一些事情,但被掩盖了。只需取出部分代码并逐步将它们恢复即可。

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

调用方法时发生 com-sun-jdi-inspirationException

另请看一下这个问题,特别是 Robin Green 的评论,您是否尝试过以这种方式调试此代码?

例子