Eclipse Java 디버깅 : 소스를 찾을 수 없음


179

일식에서 Java 앱을 디버깅하는 동안 두 가지 경우에 " 소스를 찾을 수 없음 "오류가 발생합니다.

  • 이미 가져온 다른 프로젝트의 파일에 스테핑
  • 설치된 Maven 저장소의 파일에 스테핑

"파일이 있습니다 만, 일식 그들에 단계는 대신은에 단추를 표시하지 않습니다 소스를 연결 "

연결을 시도했지만 (변수를 정의하기 위해 대화 상자를 열었습니까?!) 이클립스는 파일로 이동했지만 디버거는 변수를 검사 할 수 없었습니다. 또한 수천 개의 종속성 파일이있는 것처럼 각 종속성에 대한 소스를 수동으로 첨부하는 것은 실용적이지 않습니다.

나는 이클립스 \ 자바를 처음 사용 했기 때문에 이것이 왜 일어나는지 +이 문제를 해결하는 방법은 많은 도움이 될 것입니다!

답변:


53

Eclipse 디버깅은 프로그램에서 실제로로드 한 클래스에서 작동 합니다.

문제의 클래스처럼 들리는 증상이 프로젝트에서 발견되지 않았지만 작업중인 프로젝트 전에 디버그 정보가없는 배포 jar에서 발견 되었습니다.

여러 가지 이유로 발생할 수 있지만이 동작을 보여주는 클래스가있는 위치를 살펴보십시오 (탐색 창에서 확인). 이 jar을 사용하지 않고 JVM이 대신 프로젝트를 사용하도록하려면 프로젝트의 빌드 경로를 변경해야합니다.

편집 : 2018 년 현재 빌드 경로가 m2e 플러그인으로 관리되는 Maven과 같은 빌드 프레임 워크를 사용하는 것이 일반적 이므로이 문제는 질문을받을 때보 다 훨씬 덜 빈번해야합니다. Maven 및 m2e를 사용하는 경우 환경 설정 / Maven / "아티팩트 소스 다운로드"를 활성화하거나 Maven / "소스 다운로드"프로젝트를 마우스 오른쪽 단추로 클릭하십시오.


안녕하세요 모두 감사하지만이 답변이 더 유용하다는 것을 알았습니다 (스택 오버 링크) [ stackoverflow.com/questions/5815013/…
shareef

11
@shareef 링크는 누락 된 소스가 아닌 javadoc 누락에 관한 것입니다.
Thorbjørn Ravn Andersen

@ACV 글쎄요. 아마도 그것은 당신이 원하는만큼 정교하지 않을 것입니다-당신이 더 잘 설명하고 싶은 것을 알려 주시겠습니까?
Thorbjørn Ravn Andersen

대답은 또 다른 방법입니다. 문제는 "소스를 찾을 수 없음"이고 제 제안은 "소스를 찾으려고 시도"입니다.
Junchen Liu

1
@dhein 더 자세한 내용으로 새로운 질문을 여는 것을 고려하십시오.
Thorbjørn Ravn Andersen

300

Eclipse IDE를 구성하는 3 단계 만 수행하십시오.

참고 : 소스 조회 경로를 업데이트 한 후에는 디버그 세션을 중지했다가 다시 시작해야합니다. 그렇지 않으면 소스가 누락 된 파일에 계속 "누락 된 소스"가 표시됩니다.

소스 조회 편집 소스 조회 편집 ... 명령 [소스 조회 편집]을 선택하여 선택한 디버그 대상의 소스 조회 경로를 변경할 수있는 소스 경로 대화 상자를 엽니 다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

중요이 마지막 단계 후에 Eclipse다시 시작하십시오 .


7
소스 조회를 편집하면 실제로 효과가있었습니다. 감사합니다 Douglas Frari
stephen ebichondo

3
매력처럼 작동합니다. 감사!
Carlos Spohr

11
그리고 그래도 작동하지 않으면 어떻게 작동하지 않는 경우
Saras Arya

11
중대한!! 잘 작동했지만 실행중인 응용 프로그램을 중지하고 다시 시작한 후에 만 ​​가능합니다. 내가 할 때까지는 여전히 소스를 얻을 수없는 것처럼 보였습니다.
Jeach

1
나는 이것을 몇 달 동안 켜고 끌었다. 이것은 완벽하게 작동했습니다.
aCarella

45

발견 된 클래스에 관련 (또는 할당 된) 소스가없는 경우 증상이 완벽하게 설명됩니다.

  • 환경 설정> 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 소스 뷰어는 실제로 실행되는 행과 다른 행을 표시합니다.

때로는 빈 공간도 실행되었음을 보여줄 수 있습니다. 이는 소스가 런타임 버전의 클래스와 일치하지 않음을 의미합니다. 이것이 가능하지 않다고 생각하더라도 올바른 소스를 설정했는지 확인하십시오. 또는 수행하려는 작업에 따라 런타임이 최신 변경 사항과 일치합니다.


훌륭한 답변! 이 답변에서 누락 된 tidbit는 OSGi 번들에만 해당됩니다. 번들에 OSGI-OPT / src가 포함되어 있고 번들이 Eclipse 프로젝트의 빌드 경로에있는 경우 Eclipse는 소스를 찾을 수 있습니다. 이 기타 세부 사항에 대한 유래 항목을 참조하십시오 stackoverflow.com/questions/9720483/...
buzz3791

어쩌면 당신은 이것을 볼 수 있습니다 -나는 이미 시도 할 것들이 없습니다 ..
displayname

알아 둘만 한. 이론은 많지만 실용적인 해결책은 없습니다.
MasterJoe2

11

에서 http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

"디버그 모드에서 실행할 때 (스레드 탭에서) 실행중인 스레드를 마우스 오른쪽 단추로 클릭하고 소스 조회 편집을 선택하십시오.이 시점에서 소스 코드가 포함 된 필요한 프로젝트 / jar을 추가 할 수 있습니다."

이 방법으로 현재 프로젝트를 추가하고 문제를 해결했습니다.


"원격 Java 응용 프로그램"또는 "Java HotSpot VM"아래의 디버그보기에서이 작업을 수행해야했습니다.
Abdull

9

나는 일식 maven 프로젝트와 비슷한 문제가있었습니다. 나는이 문제로 꽤 오랫동안 싸운 다음 프로젝트를 재구성하려고했습니다.

mvn clean eclipse:eclipse

도움이되었습니다.

참고 :이 방법을 사용하면 m2e 플러그인이 혼동 될 수 있습니다. m2e는 "Maven Dependencies"라는 프로젝트에 가상 노드를 추가하고 Maven에 모든 종속성을 추가하도록 요청합니다.

mvn eclipse:eclipse반면에 파일에 많은 개별 항목이 생성됩니다 .classpath. Eclipse는 JAR을 프로젝트에 수동으로 추가 한 것처럼 처리합니다.

Eclipse에서 클래스 경로가 어떻게 작동하는지 알지 못하면이 방법은 권장되지 않습니다.


이것 만이 나에게도 효과적입니다! mvn eclipse:eclipseJava 빌드 경로에 프로젝트 종속성을 추가하면 작동합니다. 또한 m2eclipse 플러그인은 라이브러리 탭의 "Maven Dependencies"에만 프로젝트 종속성을 추가하고 디버거를 찾을 수 없습니다.
순진한

나는 무슨 일이 있었는지 모르지만 이것을 실행 한 후에는 더 이상 "Maven Dependencies"에서 maven 종속성을 볼 수 없습니다.
표시 이름

6

기존 디버그 구성을 제거하고 새 디버그 구성을 작성하십시오. 문제가 해결 될 것입니다.


나는 이것을 따라 갔다. 새로운 실행 / 디버그 구성의 '소스'탭에 원하는 Java 프로젝트 폴더도 추가했기 때문일 수 있습니다. 기존 실행 / 디버그 구성의 '소스'탭에 누락 된 소스 폴더 / 프로젝트를 추가하면 먼저 삭제하지 않고도 작동 할 수 있습니다.
xilef

6

나는 같은 문제에 직면하고 있었고, 다음 단계를 따랐다.

Window=> Preferences=> Java=> Installed JREs,

여기에 이미지 설명을 입력하십시오

위의 화면 Jre1.8.0_12에서 선택된 것을 볼 수 있습니다 .

사용중인 JRE를 선택하고을 클릭하십시오 Edit. 이제 다음 화면이 나타납니다.

여기에 이미지 설명을 입력하십시오

디렉토리를 클릭하고 Jdk를 찾으십시오. 아래 화면처럼 보일 것입니다. 여기에 이미지 설명을 입력하십시오

확인을 클릭하면 완료


이클립스는 자바 런타임에서 (전체 유형 이름이로 시작하는 클래스 클래스를로드 할 수없는 경우이 방법을 사용하여 java.같은 java.lang.String)
아론 Digulla

4

Eclipse가 프로젝트의 소스 코드를 디버깅하지 않았다는 문제가있었습니다. "소스 코드 노드를 찾았습니다"라는 빈 페이지가 나타납니다.

소스 코드 첨부 버튼을 클릭하십시오. 그런 다음 "기본"폴더를 삭제 한 다음 추가를 클릭하고 프로젝트 위치로 이동하여 첨부하십시오. 이것은 나를 위해 일했다


3

필자의 경우 소스 조회 편집 및 프로젝트 추가 후에도 작동하지 않았습니다. 프로젝트의 빌드 경로를 구성했습니다.

여기에 이미지 설명을 입력하십시오

그 후 JRE 시스템 라이브러리를 선택하여 작동했습니다.

여기에 이미지 설명을 입력하십시오


2

분명히 Eclipse는 종속 jar의 소스 코드가 어디에 있는지 자동으로 알지 못합니다. 소스가 연결된 후 디버거가 변수를 검사 할 수없는 이유는 분명하지 않습니다. 한 가지 가능성은 잘못되었거나 호환되지 않는 소스입니다.

maven 프로젝트가 있고 종속성의 소스가 로컬 저장소에서 다운로드되어 사용 가능 하다고 가정하면 maven eclipse 플러그인 인 m2eclipse 를 설치 하고 문제를 해결하는 데 도움이되는지 확인할 수 있습니다.


1

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

감사!

사사


당신은 이제이 버그에 대한 나의지지를 얻었습니다!
Abdull

1

필자의 경우 "소스 첨부"에서 "소스 첨부 구성"패널에 다른 maven 프로젝트 디렉토리를 추가했습니다. m2 저장소에서 최신 버전 jar를 추가해도 작동하지 않습니다. 다른 maven 프로젝트의 모든 클래스를 열지 못했습니다.

여기에 이미지 설명을 입력하십시오

여기 테스트는 모든 Java 소스를 포함하는 다른 maven 프로젝트였습니다.



0

나는 똑같은 문제가 있었다. 필자의 경우 Window-Preferences-Java-Debug [해제되지 않은 예외에서 실행 일시 중단]을 비활성화했습니다. 그런 다음 콘솔에 올바른 오류가 표시되었습니다. MySql 사용자가 데이터베이스에 액세스 할 수있는 권한이 없습니다. 이 주제에 따르면.


0

정보 : 여러 프로젝트에서 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")를 수행하십시오.

0

일식 또는 STS를 사용하는 경우 GC (GrepCode Plugin)를 설치하고 사용하십시오. 때때로 소스 .zip 파일을 프로젝트 경로에 첨부 할 필요가 없으므로 GrepCode가 제대로 작동합니다.


0

Eclipse의 Glassfish 서버 디버깅과 관련하여 관련 문제가 있습니다. 이것은 SVN에서 GitHub로 변경되는 다른 저장소에서 소스 코드를로드하여 발생했습니다. 이 과정에서 Glassfish 서버가 잘못된 컴파일 된 클래스를 사용 했으므로 소스와 런타임이 빈 줄에 나타나는 중단 점과 동기화되지 않습니다.

이 문제를 해결하려면 classes 디렉토리의 최상위 폴더 이름을 바꾸거나 삭제하면 Glassfish는 클래스 파일을 올바르게 컴파일 된 버전으로 업데이트하는 등 전체 클래스 디렉토리 트리를 다시 만듭니다.

classes 디렉토리는 다음 위치에 있습니다. / workspace / glassfish3122eclipsedefaultdomain / eclipseApps / <웹 애플리케이션> / WEB-INF / classes


0

Tomcat 프로젝트의 경우 프로젝트를 확인했습니다 : Window-Preferences-Tomcat-Source Path-소스 경로에 Java 프로젝트 추가


0

필자의 경우 다른 참조 프로젝트의 Maven 버전이 테스트 프로젝트의 버전과 일치하지 않습니다. 일단 동일하면 문제가 사라졌습니다.


0

디버그 모드에서 실행중인 경우 스레드에서 일시 중단 된 후 소스 조회 편집을 클릭하십시오. 이 시점에서 소스 코드가 포함 된 필요한 프로젝트 / jar을 추가 할 수 있습니다. 이 방법으로 현재 프로젝트를 추가하면 문제가 해결되었습니다. 감사


0

자동 다운로드를 통해 JAR에 소스 코드를 첨부하려면이 Eclipse 플러그인 Java 소스 첨부 파일을 사용해보십시오.

여기에 이미지 설명을 입력하십시오


0

Java 코드에서 데이터 세트가 포함 된 Excel 파일에서 처리하고 .csv 파일로 변환하는 동안이 문제가 발생했습니다.이 게시물에 대한 답변을 시도했지만 작동하지 않았습니다. 문제는 jar 파일 자체였습니다. 필요한 jar 파일을 하나씩 다운로드하여 (이전 릴리스) 내 프로젝트에 추가하면 "source not found"오류가 사라졌습니다. 아마도 jar 파일을 확인할 수 있습니다. 이것이 도움이되기를 바랍니다.


0

이것은 나를 위해 일했다

프로젝트-> 속성-> 배포 어셈블리-> jar를 마우스 오른쪽 버튼으로 클릭하십시오.


0

이클립스에서 디버그 구성으로 이동하여 아래 목표를 사용하여 응용 프로그램을 실행하십시오.

-Dmaven.surefire.debug

예 :

-Dmaven.surefire.debug exec : java


0

글쎄, 여기 나를 위해 일한 것이 있습니다. 나는 가능한 모든 솔루션을 StackOverflow에 시도했습니다. 디버그 메뉴에서 소스 위치를 변경하고 m2e Eclipse 플러그인을 설치하고 내장 Maven에서 변경 한 후 run-jetty-run을 설치했는데 아무런 효과가 없었습니다. 이제 외부인의 소스 코드를 보려고하지 않았다는 사실에주의를 기울일 것입니다. 방금 OWN 코드를보고 싶었지만 매번 프로젝트에서 작성한 방법을 "시작"할 때마다 "소스를 찾았습니다"오류.

마지막으로 전문가에게 질문 한 후, 내 문제는 Eclipse에서 가장 먼저하는 일은 디버그를 통해 볼 수있는 ClassLoader를 호출하는 것이 었습니다. 내가해야 할 일은 F6 (스텝 오버) 뿐이었고 원래 전화로 돌아가서 F5 (스텝 인)로 돌아갔습니다. 그리고 내 코드가있었습니다. 한숨 .. 그런 간단한 수정이지만 한 시간이 낭비되었습니다.


0

초보자에게는

jar 파일이 아직 Eclipse 작업 공간에 포함되지 않은 프로젝트의 일부일 수 있습니다.

이를 위해서는 jar 파일의 프로젝트 이름을 알아야합니다. 말은 예를 들어, 자사의 ABC -18.0.0-SNAPSHOT.jar, 그것은 프로젝트가 당신이 당신의 작업 공간에 포함 해야하는 것을 의미 ABC .


0

나는 이클립스 2019-03 (4.11.0)과 동일한 문제가 있었고 디버그 모드에서 직접 시작하는 대신 원격 디버깅을 통해 디버깅을 수행 하여이 문제를 해결할 수있었습니다.


0

소스 첨부-> 추가-> 외부 아카이브-> jar 선택-> 열기-> 완료

캐치는 소스 병을 찾아서이 병을 부착합니다.

예를 들어 jar는 "-sources"Stax2-api-3.4.1-sources로 끝납니다.


-1

maven Java 프로젝트를 디버그하려고하는데 Eclipse가 소스를 찾을 수 없으면 다음 중 하나를 시도하십시오.

  1. pom.xml에이 줄을 추가하십시오
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...

maven-> update를 시도한 다음 디버그

  1. 프로젝트의 루트 디렉토리로 이동하십시오.

mvn 일식 : 일식

이제 디버깅을 시도하십시오


-1

일식 광자에서 "윈도우-> 환경 설정-> Java-> 디버그-> 고급 소스 조회 사용"을 끄십시오.

편집 :이 일식 버전에는 관련 버그가있어 Java 응용 프로그램을 디버깅하는 동안 "소스를 찾을 수 없음"메시지가 발생합니다. 자세한 내용은 버그 보고서 bugs.eclipse.org/bugs/show_bug.cgi?id=537699를 참조하십시오.


이 버전의 이클립스에 관련 버그가있어 Java 애플리케이션을 디버깅하는 동안 "소스를 찾을 수 없음"메시지가 나타납니다. 자세한 내용은 버그 보고서 bugs.eclipse.org/bugs/show_bug.cgi?id=537699 를 참조하십시오
6pi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.