복붙노트

[SPRING] com.sun.jdi.InvocationException 메서드 호출 중 발생했습니다.

SPRING

com.sun.jdi.InvocationException 메서드 호출 중 발생했습니다.

클래스의 객체를 만들고 싶지만 디버깅 할 때이 오류가 발생합니다. 아무도 문제가 무엇인지 말해 줄 수 있습니까? 이 코드의 위치는 Spring (2.5) Service 클래스에 있습니다.

비슷한 문제가 있습니다 : OJB 참조 디스크립터 1 : 0 관계입니까? 자동 검색을 false로 설정해야합니까?

고마워 ~

해결법

  1. ==============================

    1.근본적인 원인은 자바 디버그 인터페이스를 디버깅 할 때 클래스의 toString ()을 호출하여 팝업 상자에 클래스 정보를 표시하므로 toString 메서드가 올바르게 정의되지 않은 경우 발생할 수 있습니다.

    근본적인 원인은 자바 디버그 인터페이스를 디버깅 할 때 클래스의 toString ()을 호출하여 팝업 상자에 클래스 정보를 표시하므로 toString 메서드가 올바르게 정의되지 않은 경우 발생할 수 있습니다.

  2. ==============================

    2.또한 Eclipse에서 디버깅 할 때 비슷한 예외가있었습니다. 객체 위로 마우스를 가져 가면 팝업 상자에 com.sun.jdi.InvocationException 메시지가 표시되었습니다. 나를위한 근본 원인은 내 클래스의 toString () 메서드가 아니라 hashCode () 메서드입니다. NullPointerException이 발생하여 디버깅하는 동안 com.sun.jdi.InvocationException이 표시됩니다. NULL 포인터를 처리하고 나면 모든 것이 예상대로 작동했습니다.

    또한 Eclipse에서 디버깅 할 때 비슷한 예외가있었습니다. 객체 위로 마우스를 가져 가면 팝업 상자에 com.sun.jdi.InvocationException 메시지가 표시되었습니다. 나를위한 근본 원인은 내 클래스의 toString () 메서드가 아니라 hashCode () 메서드입니다. NullPointerException이 발생하여 디버깅하는 동안 com.sun.jdi.InvocationException이 표시됩니다. NULL 포인터를 처리하고 나면 모든 것이 예상대로 작동했습니다.

  3. ==============================

    3.글쎄요, 전후에 다른 사람들이 언급 한 몇 가지 이유 때문일 수 있습니다. 내 경우에는 문제가 같았지만 이유는 다른 것이 었습니다.

    글쎄요, 전후에 다른 사람들이 언급 한 몇 가지 이유 때문일 수 있습니다. 내 경우에는 문제가 같았지만 이유는 다른 것이 었습니다.

    클래스 (A)에서 여러 객체가 있었고 객체 중 하나는 다른 객체 (B)였습니다. 이 과정에서 B 클래스의 object (String) 중 하나가 null이었고 부모 클래스 (A)를 통해 해당 객체에 액세스하려고했습니다.

    따라서 콘솔 null 포인트 예외를 throw하지만 Eclipse 디버거 위에서 언급 한 오류가 표시됩니다.

    남은 일을 할 수 있기를 바랍니다.

  4. ==============================

    4.나에 대해서도 toString이 이와 같이 정의 될 때 같은 예외가 발생했다.

    나에 대해서도 toString이 이와 같이 정의 될 때 같은 예외가 발생했다.

    @Override
    public String toString() {
        return "ListElem [next=" + next + ", data=" + data + "]";
    }
    

    ListElem은 링크 된 목록 요소이며 다음과 같이 ListElem을 만들었습니다.

    private ListElem<Integer> cyclicLinkedList = new ListElem<>(3);
    ListElem<Integer> cyclicObj = new ListElem<>(4);
    ...
    
    cyclicLinkedList.setNext(new ListElem<Integer>(2)).setNext(cyclicObj)
        .setNext(new ListElem<Integer>(6)).setNext(new ListElem<Integer>(2)).setNext(cyclicObj);
    

    이로 인해 효과적으로 인쇄 할 수없는 순환 연결 목록이 발생했습니다. 포인터 주셔서 감사.

  5. ==============================

    5.한 번 같은 문제가있었습니다. 내 경우에는 toString () 메서드가 잘못 작성되었습니다. 정확히 말하면 우리 팀에 코드 정리 작업이 할당 된 개발자 양식과 toString () 코드, hashCode () 코드 및 equals () 메서드를 가능하면 도메인 객체에 추가 할 때 정적 최종 변수가 toString 메서드에 포함되었습니다. 그러나 클래스를 살펴 보았 기 때문에 예외가있는 객체 위에 마우스를 가져 갔을 때만 디버깅 할 때이 예외가 표시되는 "com.sun.jdi.InvocationException"을 발생시키는 최종 정적 변수가 포함되었습니다.

    한 번 같은 문제가있었습니다. 내 경우에는 toString () 메서드가 잘못 작성되었습니다. 정확히 말하면 우리 팀에 코드 정리 작업이 할당 된 개발자 양식과 toString () 코드, hashCode () 코드 및 equals () 메서드를 가능하면 도메인 객체에 추가 할 때 정적 최종 변수가 toString 메서드에 포함되었습니다. 그러나 클래스를 살펴 보았 기 때문에 예외가있는 객체 위에 마우스를 가져 갔을 때만 디버깅 할 때이 예외가 표시되는 "com.sun.jdi.InvocationException"을 발생시키는 최종 정적 변수가 포함되었습니다.

  6. ==============================

    6.그래서 나는 여기에서도 같은 문제를 겪었다. 내 도메인 인스턴스가 최대 절전 모드 세션에서 분리되었다는 것을 알았습니다. 나는 isAttached ()를 사용하여 d.attach ()를 사용하여 도메인을 점검하고 첨부했다.

    그래서 나는 여기에서도 같은 문제를 겪었다. 내 도메인 인스턴스가 최대 절전 모드 세션에서 분리되었다는 것을 알았습니다. 나는 isAttached ()를 사용하여 d.attach ()를 사용하여 도메인을 점검하고 첨부했다.

  7. ==============================

    7.다이어그램 편집기에서 변수 창의 오른쪽 상단 모서리에있는 'Show Logical Structure'버튼 / 아이콘을 비활성화하면 문제가 해결됩니다.

    다이어그램 편집기에서 변수 창의 오른쪽 상단 모서리에있는 'Show Logical Structure'버튼 / 아이콘을 비활성화하면 문제가 해결됩니다.

  8. ==============================

    8.요소가 존재하지 않는 데는 두 가지 이유가있을 수 있습니다.

    요소가 존재하지 않는 데는 두 가지 이유가있을 수 있습니다.

    Debug를 실행 중일 때 마우스를 WeBElement에 대한 참조 위로 가져 가면 com.sun.jdi.InvocationException이 발생합니까? (셀렌과 Java로이 경우) ???

    다음을 사용하지만 잘못된 xpath 또는 존재하지 않는 요소 (유효한 xpath 구문)로 인해 false를 반환하는지 구분할 수 없습니다.

    public static boolean isElementDisplayed(WebElement element) {
        boolean isDisplayed = false;
    
        try {
            isDisplayed = element.isDisplayed();
        } catch (NoSuchElementException e) {
            ;// No Worries
        }
        return isDisplayed;
    }
    
  9. ==============================

    9.이것은 내 경우였다.

    이것은 내 경우였다.

    나는 다른 BO 클래스 Classes (그가 공부 한 클래스)에 many-to-one 매핑을 갖는 학생 BO 클래스를 가졌다.

    나는 Student와 Class의 외래 키를 가지고있는 다른 테이블에 데이터를 저장하기를 원했다. 어떤 실행 상황에서, 나는 어떤 조건 하에서 학생들의 List를 가져오고 있었고, 각 Student는 Classes 클래스의 참조를 가질 것이다.

    샘플 코드 : -

    Iterator<Student> itr = studentId.iterator();
    while (itr.hasNext()) 
    {
        Student student = (Student) itr.next();
        MarksCardSiNoGen bo = new MarksCardSiNoGen();
    
        bo.setStudentId(student);
    
        Classes classBo = student.getClasses();
    
        bo.setClassId(classBo);
    }
    

    여기에서 볼 수 있듯이 저장하고 싶은 BO에 대한 Student and Classes 참조를 설정하고 있습니다. 그러나 student.getClasses ()를 검사 할 때 디버깅하는 동안이 예외 (com.sun.jdi.InvocationException)가 표시되었습니다.

    내가 찾은 문제는 HQL 쿼리를 사용하여 Student 목록을 가져온 후 플러시하고 세션을 닫는 것입니다. 그 session.close ()를 제거했을 때; 문제가 해결되었다는 진술.

    모든 데이터를 마침내 테이블 (MarksCardSiNoGen)에 저장하면 세션이 닫혔습니다.

    희망이 도움이됩니다.

  10. ==============================

    10.이클립스에서 비슷한 예외가 발생했습니다. 이것은 java.lang.StackOverflowError 오류 때문입니다. 부모 클래스의 객체를 사용하여 문자열을 반환하는 JoinColumn을 갖는 자식 클래스에서 toString () 메서드를 재정 의하여 순환 종속성을 얻었습니다. 해당 객체를 toString ()에서 제거하려고하면 작동합니다.

    이클립스에서 비슷한 예외가 발생했습니다. 이것은 java.lang.StackOverflowError 오류 때문입니다. 부모 클래스의 객체를 사용하여 문자열을 반환하는 JoinColumn을 갖는 자식 클래스에서 toString () 메서드를 재정 의하여 순환 종속성을 얻었습니다. 해당 객체를 toString ()에서 제거하려고하면 작동합니다.

  11. ==============================

    11.hashCode () 및 equals ()를 제거하면 내 문제가 해결되었습니다. 필자는 아파치의 commons-lang 해시 코드를 사용하고 비 정적 클래스를 수동으로 생성하는 빌더와 동일하므로 컴파일러에서 아무 예외도 발생시키지 않았습니다. 하지만 런타임에 호출 예외가 발생했습니다.

    hashCode () 및 equals ()를 제거하면 내 문제가 해결되었습니다. 필자는 아파치의 commons-lang 해시 코드를 사용하고 비 정적 클래스를 수동으로 생성하는 빌더와 동일하므로 컴파일러에서 아무 예외도 발생시키지 않았습니다. 하지만 런타임에 호출 예외가 발생했습니다.

  12. ==============================

    12.내 경우에는 객체 참조가 오래되지 않아서였습니다. 셀레늄 webdriver를 사용하여 응용 프로그램을 자동화 했으므로 텍스트 상자에 내용을 입력 한 다음 다른 페이지로 이동하므로 이전 페이지로 되돌아 오는 동안 해당 개체가 부실 해집니다. 그래서 이것은 예외를 일으키는 것이고, 나는 엘리먼트를 다시 초기화함으로써 그것을 처리했다. PageFactory.initElements (driver, Test.class;

    내 경우에는 객체 참조가 오래되지 않아서였습니다. 셀레늄 webdriver를 사용하여 응용 프로그램을 자동화 했으므로 텍스트 상자에 내용을 입력 한 다음 다른 페이지로 이동하므로 이전 페이지로 되돌아 오는 동안 해당 개체가 부실 해집니다. 그래서 이것은 예외를 일으키는 것이고, 나는 엘리먼트를 다시 초기화함으로써 그것을 처리했다. PageFactory.initElements (driver, Test.class;

  13. ==============================

    13.보조 데이터베이스 구성 (2 데이터베이스 구성으로 Spring 부트 - 두 번째 구성으로 지연로드가 작동하지 않음)을 사용하는 인스턴스를로드 할 때 com.sun.jdi.InvocationException이 발생했습니다. 임시 해결책은 FetchType.EAGER를 추가하는 것이 었습니다.

    보조 데이터베이스 구성 (2 데이터베이스 구성으로 Spring 부트 - 두 번째 구성으로 지연로드가 작동하지 않음)을 사용하는 인스턴스를로드 할 때 com.sun.jdi.InvocationException이 발생했습니다. 임시 해결책은 FetchType.EAGER를 추가하는 것이 었습니다.

  14. ==============================

    14.클래스 파일에서 toString 및 hashcode 메서드를 작성하는 Lombok @Data 주석을 사용했기 때문에 동일한 문제에 직면했습니다. 따라서 @Data 주석을 제거하고 특정 @Getter @Setter 주석을 사용하여 내 문제를 해결했습니다.

    클래스 파일에서 toString 및 hashcode 메서드를 작성하는 Lombok @Data 주석을 사용했기 때문에 동일한 문제에 직면했습니다. 따라서 @Data 주석을 제거하고 특정 @Getter @Setter 주석을 사용하여 내 문제를 해결했습니다.

    @ToString, @EqualsAndHashCode, 모든 필드에서 @Getter가 필요하고 @ 최종 필드가 아닌 모든 필드에서 @Setter가 필요하고 @RequiredArgsConstructor가 필요할 때만 @Data를 사용해야합니다.

  15. ==============================

    15.나는 한 번 같은 문제에 직면했다. 내 경우에는 재정의 된 equals 메서드 때문이었습니다. 하나의 가치는 null이되었습니다.

    나는 한 번 같은 문제에 직면했다. 내 경우에는 재정의 된 equals 메서드 때문이었습니다. 하나의 가치는 null이되었습니다.

  16. from https://stackoverflow.com/questions/4123628/com-sun-jdi-invocationexception-occurred-invoking-method by cc-by-sa and MIT license