Eclipse Java 디버깅 : 소스를 찾을 수 없음
일식에서 Java 앱을 디버깅하는 동안 두 가지 경우에 " 소스를 찾을 수 없음 "오류가 발생합니다.
- 이미 가져온 다른 프로젝트의 파일에 스테핑
- 설치된 Maven 저장소의 파일에 스테핑
"파일이 있습니다 만, 일식 그들에 단계는 대신은에 단추를 표시하지 않습니다 소스를 연결 "
연결을 시도했지만 (변수를 정의하기 위해 대화 상자를 열었습니까?!) 이클립스는 파일로 이동했지만 디버거는 변수를 검사 할 수 없었습니다. 또한 수천 개의 종속성 파일이있는 것처럼 각 종속성에 대한 소스를 수동으로 첨부하는 것은 실용적이지 않습니다.
나는 이클립스 \ java를 처음 사용 했기 때문에 이것이 왜 발생하는지에 대한 설명 + 이것을 해결하는 방법은 많은 도움이 될 것입니다!
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 환경 설정을 활성화해야합니다 (옵션은 " 소스 및 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에서 클래스 경로가 어떻게 작동하는지 알지 못하면이 방법은 권장되지 않습니다.
기존 디버그 구성을 제거하고 새 디버그 구성을 작성하십시오. 문제가 해결 될 것입니다.
나는 같은 문제에 직면했다. 나는 다음 단계를 따랐다.
Window=> Preferences=> Java=> Installed JREs,
위의 화면 Jre1.8.0_12
에서 선택된 것을 볼 수 있습니다 .
사용중인 JRE를 선택하고을 클릭하십시오 Edit. 이제 다음 화면이 나타납니다.
디렉토리를 클릭하고 Jdk를 찾으십시오. 아래 화면처럼 보일 것입니다.
확인을 클릭하면 완료
Eclipse가 프로젝트의 소스 코드를 디버깅하지 않았다는 문제가있었습니다. "소스 코드 노드를 찾았습니다"라는 빈 페이지가 나타납니다.
소스 코드 첨부 버튼을 클릭하십시오. 그런 다음 "기본"폴더를 삭제 한 다음 추가를 클릭하고 프로젝트 위치로 이동하여 첨부하십시오. 이것은 나를 위해 일했다
분명히 Eclipse는 종속 jar의 소스 코드가 어디에 있는지 자동으로 알지 못합니다. 소스가 연결된 후 디버거가 변수를 검사 할 수없는 이유는 분명하지 않습니다. 한 가지 가능성은 잘못되었거나 호환되지 않는 소스입니다.
maven 프로젝트가 있고 종속성의 소스가 로컬 저장소에서 다운로드되어 사용 가능 하다고 가정하면 maven eclipse 플러그인 인 m2eclipse 를 설치 하고 문제를 해결하는 데 도움이되는지 확인할 수 있습니다.
Eclipse에 액세스 가능한 종속성의 소스 코드가있을 수 있습니다. 그러나 Eclipse는 동적으로로드되는 코드의 소스 코드를 모릅니다. 예를 들어 Maven을 통해.
Maven의 경우 run-jetty-run 플러그인을 사용하는 것이 좋습니다.
http://code.google.com/p/run-jetty-run/
해결 방법으로 디버거를 사용하여 실행중인 JVM에 연결할 수도 있으며 코드가 표시됩니다. 또는 여기에서 Eclipse 용 Dynamic Source Lookup 플러그인을 사용할 수 있습니다.
https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup
불행히도 공백이있는 Windows 경로에 문제가 있기 때문에 도움이되지 않았습니다.
Eclipse Bugzilla에 대한 개선 요청을 작성했으며이 이슈 "Source not found"가 영원히 사라질 것에 동의하면 여기에서 투표하십시오
https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065
감사!
사사
필자의 경우 소스 조회 편집 및 프로젝트 추가 후에도 작동하지 않았습니다. 프로젝트의 빌드 경로를 구성했습니다.
그 후 JRE 시스템 라이브러리를 선택하여 작동했습니다.
필자의 경우 "소스 첨부"에서 "소스 첨부 구성"패널에 다른 maven 프로젝트 디렉토리를 추가했습니다. m2 저장소에서 최신 버전 jar를 추가해도 작동하지 않습니다. 다른 maven 프로젝트의 모든 클래스를 열지 못했습니다.
여기 테스트는 모든 Java 소스를 포함하는 다른 maven 프로젝트였습니다.
나는 똑같은 문제가 있었다. 필자의 경우 Window-Preferences-Java-Debug [해제되지 않은 예외에서 실행 일시 중단]을 비활성화했습니다. 그런 다음 콘솔에 올바른 오류가 표시되었습니다. MySql 사용자가 데이터베이스에 액세스 할 수있는 권한이 없습니다. 이 주제에 따르면.
정보 : 여러 프로젝트에서 maven (pom.xml)을 사용할 때 가능한 솔루션입니다.
maven으로 작업하는 경우 pom.xml에서 사용중인 버전을 확인하십시오 (예 : 1.0.1-SNAPSHOT). 코드가 최신 상태 일 수 있지만 pom.xml 종속 항목이 여전히 기존 JAR / 스냅 샷 (이전 코드 포함)을 사용하고 있습니다.
문제 찾기 :
- 해당 파일을 디버그하십시오.
- 따라서 관련 코드 영역에 중단 점을 설정하십시오.
- 때 "소스를 찾을 수 없습니다" 나타납니다 (된 .java 파일을 찾을 수 있습니다) 우측 프로젝트에 바인드해야합니다.
- 컴파일 된 .class 파일이 IDE 편집기에서 열립니다.
- "편집기와 연결"을 클릭하여 해당 JAR / Snapshot을 찾으십시오.
- 이제이 JAR이 최신 JAR인지 확인하십시오. 아마도 새로운 것이있을 것입니다. 이 경우 pom.xml에 최신 버전 번호를 쓰십시오.
- 그런 다음 올바른 프로젝트 디렉토리에 maven 업데이트 및 빌드 (예 : "mvn clean install -U")를 수행하십시오.
일식 또는 STS를 사용하는 경우 GC (GrepCode Plugin)를 설치하고 사용하십시오. 때때로 소스 .zip 파일을 프로젝트 경로에 첨부 할 필요가 없으므로 GrepCode가 제대로 작동합니다.
Eclipse의 Glassfish 서버 디버깅과 관련하여 관련 문제가 있습니다. 이것은 SVN에서 GitHub로 변경되는 다른 저장소에서 소스 코드를로드하여 발생했습니다. 이 과정에서 Glassfish 서버가 잘못된 컴파일 된 클래스를 사용 했으므로 소스와 런타임이 빈 줄에 나타나는 중단 점과 동기화되지 않습니다.
이 문제를 해결하려면 classes 디렉토리의 최상위 폴더 이름을 바꾸거나 삭제하면 Glassfish는 클래스 파일을 올바르게 컴파일 된 버전으로 업데이트하는 것을 포함하여 전체 클래스 디렉토리 트리를 다시 만듭니다.
classes 디렉토리는 다음 위치에 있습니다. / workspace / glassfish3122eclipsedefaultdomain / eclipseApps / <웹 애플리케이션> / WEB-INF / classes
Tomcat 프로젝트의 경우 프로젝트를 확인했습니다 : Window-Preferences-Tomcat-Source Path-소스 경로에 Java 프로젝트 추가
필자의 경우 다른 참조 프로젝트의 Maven 버전이 테스트 프로젝트의 버전과 일치하지 않습니다. 일단 동일하면 문제가 사라졌습니다.
디버그 모드에서 실행중인 경우 스레드에서 일시 중단 된 후 소스 조회 편집을 클릭하십시오. 이 시점에서 소스 코드가 포함 된 필요한 프로젝트 / jar을 추가 할 수 있습니다. 이 방법으로 현재 프로젝트를 추가하면 문제가 해결되었습니다. 감사
자동 다운로드를 통해 JAR에 소스 코드를 첨부하려면이 Eclipse 플러그인 Java 소스 접속기를 사용하십시오.
Java 코드에서 데이터 세트가 포함 된 Excel 파일에서 처리하고 .csv 파일로 변환하는 동안이 문제가 발생했습니다.이 게시물에 대한 답변을 시도했지만 작동하지 않았습니다. 문제는 jar 파일 자체였습니다. 필요한 jar 파일을 하나씩 다운로드하여 (이전 릴리스) 내 프로젝트에 추가하면 "source not found"오류가 사라졌습니다. 아마도 jar 파일을 확인할 수 있습니다. 이것이 도움이되기를 바랍니다.
이것은 나를 위해 일했다
프로젝트-> 속성-> 배포 어셈블리-> jar를 마우스 오른쪽 버튼으로 클릭하십시오.
이클립스에서 디버그 구성으로 이동하여 아래 목표를 사용하여 응용 프로그램을 실행하십시오.
-Dmaven.surefire.debug
예 :
-Dmaven.surefire.debug exec : java
글쎄, 여기 나를 위해 일한 것이 있습니다. 나는 가능한 모든 솔루션을 StackOverflow에 시도했습니다. 디버그 메뉴에서 소스 위치를 변경하고 m2e Eclipse 플러그인을 설치하고 내장 Maven에서 변경 한 후 run-jetty-run을 설치했는데 아무런 효과가 없었습니다. 이제 외부인의 소스 코드를 보려고하지 않았다는 사실에주의를 기울일 것입니다. 방금 OWN 코드를보고 싶었지만 매번 내 프로젝트에서 작성한 방법에 대해 "스텝"할 때마다 "소스를 찾았습니다"오류.
마지막으로 전문가에게 질문 한 후, 내 문제는 Eclipse에서 가장 먼저하는 일은 디버그를 통해 볼 수있는 ClassLoader를 호출하는 것이 었습니다. 내가해야 할 일은 F6 (스텝 오버) 뿐이었고 원래 전화로 돌아가서 F5 (스텝 인)로 돌아갔습니다. 그리고 내 코드가있었습니다. 한숨 .. 그런 간단한 수정이지만 한 시간이 낭비되었습니다.
초보자에게는
jar 파일이 아직 Eclipse 작업 공간에 포함되지 않은 프로젝트의 일부일 수 있습니다.
이를 위해서는 jar 파일의 프로젝트 이름을 알아야합니다. 말은 예를 들어, 자사의 ABC -18.0.0-SNAPSHOT.jar, 그것은 프로젝트가 당신이 당신의 작업 공간에 포함 해야하는 것을 의미 ABC .
클릭-> 소스 조회 경로 편집
다음 시간 이후에
클릭-> 마지막으로 Java 프로젝트를 선택하고 프로젝트 경로를 선택하십시오.
출처 : https://www.youtube.com/watch?v=IGIKPY6q1Qw
나는 이클립스 2019-03 (4.11.0)과 동일한 문제가 있었고 디버그 모드에서 직접 실행하는 대신 원격 디버깅을 통해 디버깅을 수행 하여이 문제를 해결할 수있었습니다.
maven Java 프로젝트를 디버그하려고하는데 Eclipse가 소스를 찾을 수 없으면 다음 중 하나를 시도하십시오.
- pom.xml에이 줄을 추가하십시오
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...
maven-> update를 시도한 다음 디버그
- 프로젝트의 루트 디렉토리로 이동하십시오.
mvn 일식 : 일식
이제 디버깅을 시도하십시오
일식 광자에서 "윈도우-> 환경 설정-> Java-> 디버그-> 고급 소스 조회 사용"을 끄십시오.
편집 :이 일식 버전에는 관련 버그가있어 Java 응용 프로그램을 디버깅하는 동안 "소스를 찾을 수 없음"메시지가 발생합니다. 자세한 내용은 버그 보고서 bugs.eclipse.org/bugs/show_bug.cgi?id=537699를 참조하십시오.
내 경우에는 클릭하여 문제가 해결되었습니다. Remove All Breakpoints
참고 URL : https://stackoverflow.com/questions/6174550/eclipse-java-debugging-source-not-found
'IT story' 카테고리의 다른 글
파이썬에서 파일의 MIME 유형을 찾는 방법은 무엇입니까? (0) | 2020.05.25 |
---|---|
동기 연결에 HttpClient를 사용하는 이유 (0) | 2020.05.25 |
AngularJS에서 양식이 유효하지 않은 경우 제출 버튼 비활성화 (0) | 2020.05.25 |
경고 : 분리 된 뷰 컨트롤러에서 뷰 컨트롤러를 표시하지 않는 것이 좋습니다. (0) | 2020.05.25 |
파이썬에서 구분 기호로 문자열 나누기 (0) | 2020.05.24 |