Eclipse Java 디버깅: 소스를 찾을 수 없습니다.
이클립스에서 Java 앱을 디버깅하는 동안 다음 두 가지 경우 "Source not found" 오류가 발생합니다.
- 이미 가져온 다른 프로젝트의 파일 단계인
- 설치된 maven 저장소의 파일 스텝인
파일은 있지만, 이클립스는 파일에 들어가지 않고, 대신에 「소스 첨부」버튼을 표시합니다.
(변수를 정의하기 위해 대화 상자를 열었습니까?) 첨부하려고 했는데, 이클립스가 파일로 점프했지만 디버거는 그곳에서 변수를 검사할 수 없었습니다.또한 종속성별로 소스를 수동으로 첨부하는 것은 실용적이지 않습니다. 제 경우 종속성 파일이 수천 개에 달하기 때문입니다.
저는 이클립스\java를 처음 접하기 때문에 이 현상이 발생하는 원인에 대한 설명과 이 문제를 해결하는 방법에 대해 설명하면 많은 도움이 됩니다.
Eclipse IDE 구성에는 3단계만 하면 됩니다.
참고: 소스 조회 경로를 업데이트한 후 디버깅 세션을 중지하고 다시 시작해야 합니다.그렇지 않으면 누락된 소스가 있는 파일에 계속 "missing source"가 표시됩니다.
소스 룩업 편집 소스 룩업 편집...[ Edit Source Lookup ]명령어를 사용하여 선택한 디버깅타깃의 소스 조회 경로를 변경할 수 있는 [Source Path]대화상자를 엽니다.
중요 이 마지막 단계 이후 이클립스를 다시 시작합니다.
이클립스 디버깅은 프로그램에 의해 실제로 로드된 클래스에서 작동합니다.
설명한 증상은 해당 클래스가 프로젝트에서 발견되지 않은 것처럼 들립니다만, 작업 중인 프로젝트 전에 디버깅 정보가 없는 배포 항아리에 있습니다.
이 문제는 여러 가지 이유로 발생할 수 있지만 이 동작을 나타내는 클래스가 발견된 위치를 확인하십시오(네비게이션페인으로 식별).이 jar를 사용하지 않으려면 프로젝트의 빌드 경로를 변경하고 JVM이 대신 프로젝트를 사용하도록 해야 합니다.
편집: 2018년 현재 Maven과 같은 빌드 프레임워크를 사용하는 것이 일반적입니다.이 경우 빌드 경로는 m2e 플러그인에 의해 관리되므로 이 문제는 질문을 받았을 때보다 발생 빈도가 매우 낮습니다.Maven 및 m2e를 사용하는 경우 기본 설정 / Maven / "Art팩트 소스 다운로드"를 활성화하거나 Maven / "소스 다운로드" 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.
이러한 증상은 발견된 클래스에 관련(또는 할당된) 소스가 없는 경우를 완벽하게 설명합니다.
- JDK 클래스의 소스는 [Preferences]> [ Java ]> [ Installed JRE ]로 관련지을 수 있습니다.(JDK가 아닌) JRE가 사용되는 기본 JRE로 감지되면 JDK 클래스에 연결된 소스가 없습니다.모든 JDK 클래스가 소스를 제공한 것은 아니며 일부는 이진 형식으로만 배포됩니다.
- 프로젝트의 빌드 경로에서 클래스를 수동으로 추가하려면 연결된 원본을 수동으로 연결해야 합니다.소스는 zip 파일 또는 jar 파일, 워크스페이스 또는 파일 시스템에 있을 수 있습니다.예를 들어, Eclipse는 zip을 검색하므로 원본이 아카이브 파일의 루트에 있을 필요가 없습니다.
- 다른 플러그인(매븐, PDE 등)으로부터의 의존 관계로부터의 클래스.이 경우 소스가 어떻게 제공되는지는 플러그인에 따라 달라집니다.
- 프로젝트에서 로드된 클래스는 프로젝트의 소스와 자동으로 일치합니다.
하지만 이클립스가 여전히 소스를 첨부할 것을 제안하면 어떻게 될까요? 내 클래스와 그 소스를 올바르게 설정해도:
이는 거의 항상 이클립스가 예상과 다른 장소에서 클래스를 찾고 있다는 것을 의미합니다.소스 조회 경로를 검사하여 잘못된 클래스를 가져올 수 있는 위치를 확인합니다.결과에 따라 경로를 업데이트합니다.
Eclipse는 중단점을 맞혀도 아무것도 찾지 못합니다.
이 문제는 원본 조회 경로에 현재 런타임에 로드된 클래스가 포함되어 있지 않은 경우에 발생합니다.클래스가 작업 영역에 있더라도 Eclipse는 소스 조회 경로를 엄격하게 따르고 현재 디버깅된 프로젝트의 종속성만 첨부하므로 실행 구성에 표시되지 않을 수 있습니다.
PDE 디버깅번들은 예외입니다이 경우 런타임은 서로 종속성을 선언할 필요가 없는 여러 프로젝트로 구성되므로 소스 조회 경로에서 클래스를 사용할 수 없는 경우에도 이클립스는 자동으로 작업 공간에서 클래스를 찾을 수 있습니다.
중단점에 도달했을 때 변수를 볼 수 없거나 소스를 열었을 뿐 중단점 선을 선택하지 않습니다.
즉, 런타임에서는 JVM 또는 클래스 자체에 필요한 디버깅 정보가 없습니다.클래스가 컴파일 될 때마다 디버깅 정보를 첨부할 수 있습니다.클래스의 스토리지 공간을 줄이기 위해 이 정보를 생략할 수 있으므로 이러한 코드를 디버깅하는 데 어려움이 있습니다.유일한 방법은 디버깅을 활성화하여 다시 컴파일하는 것입니다.
Eclipse 원본 뷰어는 실제로 실행된 행과 다른 행을 표시합니다.
빈 공간이 실행되는 경우도 있습니다.즉, 원본이 클래스의 런타임 버전과 일치하지 않습니다.이것이 불가능하다고 생각되는 경우에도 가능합니다.그렇기 때문에, 올바른 소스를 설정해 주세요.또는 수행하려는 작업에 따라 실행 시 최신 변경 내용과 일치합니다.
http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source 에서
디버깅 모드로 실행할 경우 실행 중인 스레드(스레드 탭)를 마우스 오른쪽 버튼으로 클릭하고 소스 룩업 편집을 선택합니다.이 시점에서 소스 코드를 포함한 필요한 프로젝트/항아리를 추가할 수 있습니다."
나는 이렇게 나의 현재 프로젝트를 추가했고, 그것은 나의 문제를 해결했다.
나도 일식 메이븐 프로젝트에서 비슷한 문제가 있었어.저는 이 문제와 꽤 오랫동안 싸웠고 그 후 프로젝트 재구축을 위해 노력했습니다.
mvn clean eclipse:eclipse
도움이 됐어요
주의: 이 방법을 사용하면 두 가지 방법이 매우 다르기 때문에 m2e 플러그인이 혼동됩니다.m2e는 프로젝트에 "Maven Dependencies"라는 가상 노드를 추가하고 Maven에게 모든 종속성을 추가하도록 요청합니다.
mvn eclipse:eclipse
에서는, 됩니다..classpath
는 JAR을 합니다. 이클립스 JAR.
Eclipse의 클래스 경로가 어떻게 작동하는지 모르는 한 이 방법은 권장되지 않습니다.
나도 같은 문제에 직면해 있었고, 나는 벨로우 절차를 따랐어.
Window => = > = > ,
나와 있습니다.Jre1.8.0_12
을 사용하다
사용 중인 JRE를 선택하고 을 클릭합니다. 이제 Bellow 화면이 나타납니다.
디렉토리를 클릭하고 Jdk를 찾습니다.아래 화면처럼 보일 것입니다.
[확인]을 클릭하면 완료됩니다.
기존 디버깅 설정을 삭제하고 새 설정을 만듭니다.그러면 문제가 해결될 거예요.
이클립스가 프로젝트의 소스 코드를 디버깅하지 않는 문제가 있었습니다."소스 코드 노드 발견"이라는 빈 페이지가 표시되었습니다.
Attach source code 버튼을 클릭해 주세요.그런 다음 "기본" 폴더를 삭제한 다음 추가를 클릭하고 프로젝트 위치로 이동하여 첨부합니다.이건 내게 효과가 있었다.
언급된 답변 중 어느 것도 나에게는 통하지 않았다.
이 문제를 해결하려면 아래 단계를 따라야 합니다.
- Java HotSpot(TM) 64비트 서버를 오른쪽 클릭합니다.
- "Edit Source Lookup"을 선택합니다.
- "추가"를 클릭합니다.
- Java 프로젝트 대신 "파일 시스템 디렉토리"를 선택합니다.
- 프로젝트의 루트 디렉토리를 선택합니다.
- "서브폴더 검색"을 선택합니다.
- OK OK를 클릭합니다.
고마워요.
저 같은 경우에는 소스 조회 편집 및 프로젝트 추가 후에도 작동하지 않았습니다.프로젝트의 빌드 경로를 구성했습니다.
그 후 JRE System Library를 선택했는데 작동했습니다.
[소스 검색 경로 편집]을 클릭합니다.
그 후
[ - ] > [ Add final select Java project ]를 클릭하여 프로젝트 경로를 선택합니다.
출처 : https://www.youtube.com/watch?v=IGIKPY6q1Qw
Eclipse는 종속된 자리의 소스 코드가 어디에 있는지 자동으로 인식하지 못합니다.소스가 연결된 후 디버거가 변수를 검사할 수 없는 이유는 명확하지 않습니다.소스가 올바르지 않거나 호환되지 않을 수 있습니다.
maven 프로젝트가 있고 의존관계 소스가 로컬저장소에서 다운로드되어 사용 가능하다고 가정하면 m2eclipse 플러그인인 m2eclipse를 설치하고 그것이 문제 해결에 도움이 되는지 확인할 수 있습니다.
Eclipse에 액세스할 수 있는 종속성의 소스 코드가 있을 수 있습니다.그러나 Eclipse는 동적으로 로드되는 코드의 소스 코드를 알지 못합니다.예를 들어 Maven을 통해.
Maven의 경우 run-jetty-run 플러그인을 사용할 것을 권장합니다.
http://code.google.com/p/run-jetty-run/
회피책으로 실행 중인 JVM에 디버거를 사용하여 연결할 수도 있으며 코드가 표시됩니다.또는 다음 위치에서 Eclipse용 동적 원본 조회 플러그인을 사용할 수 있습니다.
https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup
안타깝게도 공간이 있는 Windows 경로에 문제가 있어서 도움이 되지 않았습니다.
저는 Eclipse Bugzilla에 대한 확장 요청을 작성했습니다. 만약 당신이 이 이슈 "Source not found"가 영원히 사라져야 한다는 것에 동의한다면, 여기에서 투표해 주십시오.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065
감사합니다!
사사
"Attach Source"의 경우 "Source Attachment Configuration" 패널에 다른 maven 프로젝트 디렉토리를 추가했습니다.m2 저장소에서 최신 버전 jar 추가가 작동하지 않습니다.다른 메이븐 프로젝트의 모든 클래스를 열지 못했습니다.
이 테스트는 모든 Java 소스를 포함하는 다른 maven 프로젝트입니다.
저도 똑같은 문제가 있었어요.내 경우 Window-Preferences-Java-Debug [예외되지 않은 경우 실행 일시 중지]를 비활성화했습니다.그런 다음 콘솔에 올바른 오류가 표시되었습니다. MySql 사용자는 데이터베이스에 액세스할 수 있는 권한이 없습니다.이 토픽에 따르면.
정보: 이것은 maven(pom.xml)을 몇 개의 프로젝트에서 사용할 때 가능한 해결책입니다.
maven 을 사용하고 있는 경우는, 대응하는 pom.xml 로 사용하고 있는 버전을 확인합니다(예: 1.0.1-SNAPSHOT).코드가 최신일 수도 있지만 pom.xml 의존관계는 여전히 오래된 JAR/스냅샷(오래된 코드 포함)을 캡처하고 있습니다.
문제 발견:
- 해당하는 파일을 디버깅해 보겠습니다.
- 따라서 관련 코드 영역에 브레이크 포인트를 설정합니다.
- "source not found"가 나타나면 올바른 프로젝트(.java 파일을 찾을 수 있음)에 바인딩해야 합니다.
- 컴파일 .class 파일이 IDE 에디터로 열립니다.
- 해당하는 JAR/스냅샷을 찾으려면 "Link with Editor"를 클릭하십시오.
- 이 JAR이 최신 JAR인지 확인합니다.아마도 새로운 것이 있을 것이다.이 경우 pom.xml에 최신 버전 번호를 입력합니다.
- 그런 다음 올바른 프로젝트 디렉토리에서 maven 업데이트 및 빌드(예: "mvn clean install -U")를 수행합니다.
Eclipse 또는 STS를 사용하는 경우 GC(GrepCode Plugin)를 설치하여 사용하십시오.GrepCode가 정상적으로 동작하도록 소스 .zip 파일을 프로젝트 경로에 첨부할 필요가 없습니다.
Eclipse의 Glassfish 서버 디버깅과 관련된 문제가 있었습니다.이는 다른 저장소에서 소스 코드를 로드하여(SVN에서 GitHub로 변경) 발생한 것입니다.이 과정에서 Glassfish 서버에서 잘못된 컴파일 클래스가 사용되었기 때문에 소스와 실행 시간이 동기화되지 않고 공백 행에 중단점이 표시됩니다.
이 문제를 해결하려면 클래스 디렉토리의 맨 위 폴더의 이름을 바꾸거나 삭제하면 Glassfish는 클래스 파일을 올바르게 컴파일된 버전으로 업데이트하는 것을 포함하여 전체 클래스 디렉토리 트리를 재생성합니다.
classes 디렉토리는 /workspace/glassfish3122 eclipsedefaultdomain/eclipseApps/<고객님의 웹 어플리케이션>/WEB-INF/classes에 있습니다.
Tomcat 프로젝트의 경우 여기서 프로젝트를 체크했습니다.Windows - Preferences - Tomcat - Source Path - Add Java projects to source path
제 경우, 다른 참조 프로젝트의 Maven 버전이 테스트 프로젝트의 버전과 일치하지 않았습니다.일단 그들이 같으면, 그 문제는 사라졌다.
디버깅 모드로 실행할 경우 스레드에서 일시 중단된 후 소스 조회 편집을 클릭합니다.이 시점에서 소스 코드를 포함한 필요한 프로젝트/항아리를 추가할 수 있습니다.이렇게 현재의 프로젝트를 추가하고 나서 문제가 해결되었습니다.고마워요.
자동 다운로드로 소스 코드를 JAR에 첨부하려면 이 이클립스 플러그인 Java Source Attacher를 사용해 보십시오.
데이터 세트를 포함한 엑셀 파일을 처리하는 자바 코드 작업 중 이 문제가 발생하여 .csv 파일로 변환하여 이 게시물에 대한 답변을 시도했지만 작동하지 않았습니다.문제는 jar 파일 그 자체입니다. 필요한 jar 파일을 하나씩 다운로드해서 제 프로젝트에 추가한 후, "source not found" 오류가 사라졌습니다. 아마도 당신은 jar 파일을 확인할 수 있을 것입니다.이게 도움이 됐으면 좋겠어
이것은 나에게 효과가 있었다.
프로젝트 우클릭 -> 속성 -> 전개 어셈블리 -> jar 추가
다음 목표를 사용하여 응용 프로그램을 실행할 때 디버깅 구성으로 이동하여 아래 목표를 사용하여 응용 프로그램을 실행합니다.
- 드마벤.surefire.disples
예
- 드마벤.surefire.sure exec: 개요
음, 여기 나한테 효과가 있었던 게 있어.Stack Overflow에서 가능한 모든 솔루션을 시도했습니다.디버깅 메뉴에서 소스 위치를 변경하여 m2e Eclipse 플러그인을 설치하고 임베디드 Maven에서 변경하며 런제티 실행을 설치했지만 작동하지 않았습니다.여기서 주의할 점은 외부인의 소스 코드를 보려고 한 것이 아니라 내 코드를 보려고 했는데, 내 프로젝트에서 작성한 메서드에 "참조"할 때마다 "Source now found" 오류가 발생했다는 것입니다.
마지막으로 전문가에게 물어본 결과, Eclipse가 가장 먼저 실행한 것은 ClassLoader를 호출하는 것이었습니다.이것은 디버깅스택에서 확인할 수 있습니다.제가 해야 할 일은 F6(스텝오버)뿐이었고, 그 후 다시 원래 통화로 돌아가 F5(스텝인)로 이동했습니다.그리고 내 암호도 있었어하아...그렇게 간단한 수정이지만 한 시간은 낭비되었다.
초보자분들은
jar 파일이 아직 Eclipse 워크스페이스에 포함되지 않은 프로젝트의 일부일 수 있습니다.
이를 위해서는 jar 파일의 프로젝트 이름을 알아야 합니다.예를 들어 abc-18.0.0-SNAPSHOT.jar라고 하면 워크스페이스에 포함할 프로젝트가 abc임을 의미합니다.
Eclipse 2019-03 (4.11.0)에서도 같은 문제가 발생하여 디버깅 모드로 직접 시작하지 않고 원격 디버깅을 통해 디버깅을 하는 것만으로 해결할 수 있었습니다.
소스 첨부 -> 추가 -> 외부 아카이브 -> jar 선택 -> open ->
소스 병을 찾아서 이 병을 붙이는 게 목표야
예를 들어, jar는 "-sources" Stax2-api-3.4.1-sources로 끝납니다.
이러한 현상은 버전 때문에 발생할 수 있습니다.또한 최신 버전을 사용하고 있다면 오래된 버전을 사용해 보세요.
언급URL : https://stackoverflow.com/questions/6174550/eclipse-java-debugging-source-not-found
'programing' 카테고리의 다른 글
Java에서 List 개체를 초기화하려면 어떻게 해야 합니까? (0) | 2022.08.31 |
---|---|
Java 다중 상속 (0) | 2022.08.31 |
vue 설정 후 Vee 검증 이전 값 가져오기 (0) | 2022.08.31 |
vue js에서 localStorage의 데이터를 비활성화하는 방법 (0) | 2022.08.31 |
스태틱과 글로벌 (0) | 2022.08.31 |