일식에서 Java 앱을 디버깅하는 동안 두 가지 경우에 ” 소스를 찾을 수 없음 “오류가 발생합니다.
- 이미 가져온 다른 프로젝트의 파일에 스테핑
- 설치된 Maven 저장소의 파일에 스테핑
“파일이 있습니다 만, 일식 그들에 단계는 대신은에 단추를 표시하지 않습니다 소스를 연결 “
연결을 시도했지만 (변수를 정의하기 위해 대화 상자를 열었습니까?!) 이클립스는 파일로 이동했지만 디버거는 변수를 검사 할 수 없었습니다. 또한 수천 개의 종속성 파일이있는 것처럼 각 종속성에 대한 소스를 수동으로 첨부하는 것은 실용적이지 않습니다.
나는 이클립스 \ 자바를 처음 사용 했기 때문에 이것이 왜 일어나는지 +이 문제를 해결하는 방법은 많은 도움이 될 것입니다!
답변
Eclipse 디버깅은 프로그램에서 실제로로드 한 클래스에서 작동 합니다.
문제의 클래스처럼 들리는 증상이 프로젝트에서 발견되지 않았지만 작업중인 프로젝트 전에 디버그 정보가없는 배포 jar에서 발견 되었습니다.
여러 가지 이유로 발생할 수 있지만이 동작을 보여주는 클래스가있는 위치를 살펴보십시오 (탐색 창에서 확인). 이 jar을 사용하지 않고 JVM이 대신 프로젝트를 사용하도록하려면 프로젝트의 빌드 경로를 변경해야합니다.
편집 : 2018 년 현재 빌드 경로가 m2e 플러그인으로 관리되는 Maven과 같은 빌드 프레임 워크를 사용하는 것이 일반적 이므로이 문제는 질문을받을 때보 다 훨씬 덜 빈번해야합니다. Maven 및 m2e를 사용하는 경우 환경 설정 / Maven / “아티팩트 소스 다운로드”를 활성화하거나 Maven / “소스 다운로드”프로젝트를 마우스 오른쪽 단추로 클릭하십시오.
답변
Eclipse IDE를 구성하는 3 단계 만 수행하십시오.
참고 : 소스 조회 경로를 업데이트 한 후에는 디버그 세션을 중지했다가 다시 시작해야합니다. 그렇지 않으면 소스가 누락 된 파일에 계속 “누락 된 소스”가 표시됩니다.
소스 조회 편집 소스 조회 편집 … 명령 [소스 조회 편집]을 선택하여 선택한 디버그 대상의 소스 조회 경로를 변경할 수있는 소스 경로 대화 상자를 엽니 다.
중요이 마지막 단계 후에 Eclipse 를 다시 시작하십시오 .
답변
발견 된 클래스에 관련 (또는 할당 된) 소스가없는 경우 증상이 완벽하게 설명됩니다.
- 환경 설정> Java> 설치된 JRE 에서 JDK 클래스의 소스를 연관시킬 수 있습니다 . JRE (JDK 아님)가 사용할 기본 JRE로 감지되면 JDK 클래스에 첨부 된 소스가없는 것입니다. 모든 JDK 클래스가 소스를 제공 한 것은 아니며 일부는 바이너리 형식으로 만 배포됩니다.
- 프로젝트의 빌드 경로에서 클래스를 수동으로 추가하려면 관련 소스를 수동으로 첨부해야합니다. 소스는 zip 또는 jar 파일, 작업 공간 또는 파일 시스템에있을 수 있습니다. Eclipse는 zip을 스캔하므로 소스가 아카이브 파일의 루트에 있지 않아도됩니다.
- 다른 플러그인 (maven, PDE 등)에서 오는 의존성 클래스. 이 경우 소스를 제공하는 방법은 플러그인에 달려 있습니다.
- PDE 는 각 플러그인에 플러그인 소스가 포함 된 해당 XXX.source 번들 이 있어야합니다 . 자세한 내용은 여기 및 여기를 참조하십시오 .
- m2eclipse 는 사용 가능한 경우 Maven 종속성에 대한 소스 및 javadoc을 가져올 수 있습니다. 이 기능은 m2eclipse 환경 설정에서 활성화해야합니다 (옵션의 이름은 ” Download source and javadocs ” 와 같습니다) .
- 다른 플러그인의 경우 해당 설명서를 참조해야합니다.
- 프로젝트에서로드 된 클래스는 프로젝트의 소스와 자동으로 일치합니다.
그러나 클래스와 소스를 올바르게 설정하더라도 Eclipse가 여전히 소스를 첨부하도록 제안하면 어떻게됩니까?
이것은 거의 항상 Eclipse가 예상과 다른 장소에서 클래스를 찾고 있음을 의미합니다. 소스 검색 경로를 검사하여 잘못된 클래스를 얻을 수있는 위치를 확인하십시오. 찾은 결과에 따라 경로를 업데이트하십시오.
중단 점에 도달하면 Eclipse가 전혀 찾지 않습니다.
이것은 소스 조회 경로에 현재 런타임에로드 된 클래스가 포함되어 있지 않을 때 발생합니다. 클래스가 작업 공간에 있어도 Eclipse는 소스 검색 경로를 엄격하게 따르고 현재 디버그 된 프로젝트의 종속성 만 첨부하므로 실행 구성에 표시되지 않을 수 있습니다.
PDE 의 디버깅 번들은 예외입니다 . 이 경우 런타임은 서로에 대한 종속성을 선언 할 필요가없는 여러 프로젝트로 구성되므로 소스 조회 경로에서 클래스를 사용할 수없는 경우에도 Eclipse는 작업 공간에서 클래스를 자동으로 찾습니다.
중단 점에 도달했을 때 변수를 볼 수 없거나 소스 만 열지 만 중단 점 행을 선택하지는 않습니다.
이는 런타임에서 JVM 또는 클래스 자체에 필요한 디버그 정보가 없음을 의미합니다. 클래스가 컴파일 될 때마다 디버그 정보를 첨부 할 수 있습니다. 클래스의 저장 공간을 줄이기 위해 때때로이 정보가 생략되어 이러한 코드를 디버깅하기가 어렵습니다. 유일한 기회는 디버그가 활성화 된 상태에서 재 컴파일을 시도하는 것입니다.
Eclipse 소스 뷰어는 실제로 실행되는 행과 다른 행을 표시합니다.
때로는 빈 공간도 실행되었음을 보여줄 수 있습니다. 이는 소스가 런타임 버전의 클래스와 일치하지 않음을 의미합니다. 이것이 가능하지 않다고 생각하더라도 올바른 소스를 설정했는지 확인하십시오. 또는 수행하려는 작업에 따라 런타임이 최신 변경 사항과 일치합니다.
답변
에서 http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source
“디버그 모드에서 실행할 때 (스레드 탭에서) 실행중인 스레드를 마우스 오른쪽 단추로 클릭하고 소스 조회 편집을 선택하십시오.이 시점에서 소스 코드가 포함 된 필요한 프로젝트 / jar을 추가 할 수 있습니다.”
이 방법으로 현재 프로젝트를 추가하고 문제를 해결했습니다.
답변
나는 일식 maven 프로젝트와 비슷한 문제가있었습니다. 나는이 문제로 꽤 오랫동안 싸운 다음 프로젝트를 재구성하려고했습니다.
mvn clean eclipse:eclipse
도움이되었습니다.
참고 :이 방법을 사용하면 m2e 플러그인이 혼동 될 수 있습니다. m2e는 “Maven Dependencies”라는 프로젝트에 가상 노드를 추가하고 Maven에 모든 종속성을 추가하도록 요청합니다.
mvn eclipse:eclipse
반면에 파일에 많은 개별 항목이 생성됩니다 .classpath
. Eclipse는 JAR을 프로젝트에 수동으로 추가 한 것처럼 처리합니다.
Eclipse에서 클래스 경로가 어떻게 작동하는지 알지 못하면이 방법은 권장되지 않습니다.