2012-05-28 3 views
0

매우 이상한 문제가 있습니다. 코드를 디버깅하려고하면 sts는 코드를 완전히 무시합니다. 아래는 내 간단한 코드이며 왜 값이 변경되지 않았는지 궁금해했습니다. 디버그했을 때 {에서 client.employmentKindOfWork ="asdasd"까지의 행은 실행되지 않습니다. all을 건너 뛰고 바로 client.save()로 점프합니다.스프링 소스 도구 모음 코드 건너 뛰기

  1. 다음 깨끗한 프로젝트를 클릭하여 마법사 명령
  2. 통해 청소 :
    Client client = Client.FindById(caseInstance.clientIdClient); 
    if (client!=null) { 
        client.clientMailAddr1="sdfsdfsf" 
        client.isDelete = true 
        client.employmentKindOfWork ="asdasd" 
        client.save() 
    } 
    

    나는 다음 단계를 시도했다.
  3. 프로젝트를 몇 차례 빌드하십시오.
  4. 열기 및 닫기 STS.
  5. 새 작업 공간을 만든 다음 프로젝트를 다시 가져 왔습니다.
  6. 환경 설정에서이 줄을 추가 자바> JE 편집 및 기본 VM -XX : + UseParallelGC
  7. 마우스 오른쪽 버튼을 클릭하여 프로젝트를 새로 고침하고 한

모두의 명령 마법사를 통해

  • 재 컴파일을 새로 고침 작동하지!!!

    Pls. 모든 팀 동료가 가지고있는 버전이 같아서이 문제를 해결할 수 없기 때문에 업데이트를 제외하고이 문제를 해결할 수있는 노력을하지 말 것을 제안합니다.

  • +0

    몇 가지 질문 : 디버거를 단계별로 실행하거나 디버거를 사용하지 않는 경우에만 발생합니까? 당신은 정말로'클라이언트'가 정말로 null이 아닌지 확신합니까? if 문을 제거하면 어떻게됩니까? 'client'를 변경하기 위해 호출 할 때마다 sys.out.println 문을 추가하면 어떻게 될까요? 클라이언트의 값이 업데이트되고 있습니까? Java 컴파일러 기본 설정이 클래스 파일에 행 번호를 포함하도록 설정되어 있는지 확인하십시오. –

    +0

    디버거와 사용하지 않을 때 발생합니다. 예, 그것은 If 문에 들어가서 client.save()로 점프하기 때문에 null이 아닌 것으로 확신합니다. 아니요, 값이 beng으로 업데이트되지 않습니다. 그래서 디버깅 모드로 설정되어 무슨 일이 일어나고 있는지보고됩니다. 저장하기 전에는 무시됩니다. 원본 코드에 IF가 없으며 아무 것도 나타나지 않으면 행을 건너 뜁니다. "Java 컴파일러 기본 설정이 클래스 파일에 줄 번호를 포함하도록 설정되어 있는지 확인하십시오." 정확히 어디에서 볼 수 있습니까? 죄송합니다, java와 sts에 새로운입니다. 감사. – user742102

    +0

    사실 "Java 컴파일러 환경 설정은 클래스 파일에 줄 번호를 포함하도록 설정되어 있습니다". 예, 확인됩니다. – user742102

    답변

    0

    당신이 생각하는 코드를 실행하지 않았을 가능성이 큽니다. 몇 가지 system.out.println 문을 추가하고 도달했는지 확인하십시오. 내 추측은 그들이 그렇지 않다는 것이다. 대부분의 경우 클래스 파일을 한 위치로 컴파일하지만 다른 위치에서 오래된 파일 버전을 실행 중일 수 있습니다.

    저는 이것이 maven 프로젝트라고 가정합니다. Java 빌드 경로 (프로젝트의 Ctrl-I)에서 출력 폴더가/classes 및 target/test-classes를 대상으로 설정되어 있는지 확인하십시오.