Eclipse - 라인 번호 속성이 누락되어 중단점을 설치할 수 없습니다.
브레이크 포인트를 설정하는 동안 이클립스에서 이상한 오류가 발생합니다.
Unable to insert breakpoint Absent Line Number Information
컴파일러 옵션에서 확인란을 선택했지만 실패했습니다.
Tomcat 6.0에 연결된 Eclipse 3.4.1, SUN JVM1.6.0_07에서도 동일한 오류 메시지가 표시되었습니다(다른 시스템, Sun JVM1.6.0_16에서 디버그 모드로 실행되며 디버그 연결이 올바르게 작동했습니다).
창 --> 환경설정 --> Java --> 컴파일러 --> 클래스 파일 생성: "생성된 클래스 파일에 줄 번호 속성 추가"가 선택되었습니다.깔끔하게 다시 컴파일했습니다.선택을 취소하고, 재컴파일하고, 확인하고, 재컴파일했습니다.프로젝트에서 글로벌 설정을 사용했는지 확인했습니다.여전히 같은 메시지입니다.
저는 개미 빌드로 바꿨습니다.
<javac srcdir="./src/java" destdir="./bin" debug="true">
여전히, 같은 메시지입니다.
저는 이 메시지의 원인과 이유를 찾지 못했습니다.실행 중인 Tomcat 디버그 세션과 관련이 있는 것처럼 보였지만 연결이 끊어지면 다시 컴파일하면 문제가 해결됩니다.그러나 Tomcat에 디버거를 연결하거나 연결된 디버그 세션 중에 새 중단점을 설정할 때 다시 나타났습니다.
하지만, 그 메시지는 잘못된 것으로 드러났습니다.디버깅하기 전과 디버깅하는 동안 모두 디버깅하고 중단점을 설정할 수 있었습니다(javap-l은 라인 번호도 표시했습니다).그러니 그냥 무시하세요 :)
- 일식 메뉴에서 창->환경설정->자바->컴파일러로 이동합니다.
- 라인 번호 특성 추가 확인란 표시 해제...."
- 적용 -> 예를 클릭합니다.
- 라인 번호 속성 추가 확인란을 표시합니다.."
- 다시 신청합니다.
- 행복한 디버깅으로 이동
이것이 제 문제를 해결했습니다.
- 창 -> 환경설정 -> 서버 -> 런타임 환경
- Apache Tomcat -> 편집
- JRE 대신 JDK 선택
Spring 관련 문제의 경우, 어떤 경우에는 "라인 번호 없이" 클래스를 생성한다고 생각합니다. 예를 들어,@Service
인터페이스가 없는 주석이 달린 클래스, 인터페이스를 추가하면 디버깅할 수 있습니다.자세한 예는 여기를 참조하십시오.
@Service("SkillService")
public class TestServiceWithoutInterface {
public void doSomething() {
System.out.println("Hello TestServiceWithoutInterface");
}
}
위의 서비스에는 스프링에 의해 생성된 인터페이스가 있어 "라인 번호 누락"이 발생합니다.실제 인터페이스를 추가하면 생성 문제가 해결됩니다.
public interface TestService {
void doSomething();
}
@Service("SkillService")
public class TestServiceImpl implements TestService {
public void doSomething() {
System.out.println("Hello TestServiceImpl");
}
}
BlackBerry SDK의 측면에서 이 문제에 대한 답을 얻었습니다.어떤 이유에서인지 컴파일러의 옵션을 몇 번이나 변경해도 실제 기본 설정 파일은 변경되지 않았습니다.
프로젝트의 .settings 폴더에서 org.eclipse.jdt.core.prefs라는 파일을 확인합니다.
여기서 설정을 수동으로 수정할 수 있습니다.
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
편집: 이 외에도 때때로 Eclipse에서 제공하는 경고를 무시할 수 있지만 여전히 필요한 위치에서 중지된다는 것을(를) 확인했습니다.호기심과 호기심...저는 개발자로 일할 때 우리가 다루는 것을 배우는 것들의 양동이에 이것을 담았습니다.
저는 여기서 거의 모든 해결책을 시도했지만 실패했습니다."다시 말하지 않음"을 클릭해 보셨습니까?그렇게 한 후에 프로그램을 다시 시작했고 모든 것이 잘 되었습니다.이클립스는 마치 아무 문제가 없는 것처럼 나의 브레이크 포인트를 강타했습니다.
근본 원인은 Eclipse가 자동 생성된 Spring CGLIB 프록시 개체에 대한 디버깅을 설정하려고 했기 때문입니다.해당 수준에서 무언가를 디버그해야 하는 경우가 아니면 이 문제를 무시해야 합니다.
이에 대한 자세한 설명은 다음과 같습니다.
https://github.com/spring-projects/spring-ide/issues/78
나중에 참고할 수 있도록 이 부분은 답변의 관련 부분입니다(Spring Boot 애플리케이션을 지칭한다는 사실은 무시하고 다른 많은 경우에도 동일한 동작을 수행합니다).
Eclipse/STS에서 중단점을 설정할 때마다 앱을 시작하면 IDE는 VM에서 중단점을 설정하려고 합니다.디버그 모드에서 부팅 앱을 실행할 때 발생하는 현상입니다.
JVM에 로드되는 각 클래스에 대해 IDE는 중단점을 설정해야 하는지 여부를 확인합니다.중단점을 설정하기로 결정한 경우, 는 IDE에서 중단점 정의의 정보를 사용하여(일반적으로 지정된 줄의 원본 파일에 줄 바꿈점을 설정하므로 해당 줄 번호를 포함하여) 중단점 정의의 정보를 사용합니다.
이 결정(로드된 특정 클래스에 중단점을 설정할지 여부)은 중단점을 설정한 유형, 포함 유형 및 내부 클래스를 확인합니다.이렇게 하면 내부 클래스(익명 내부 클래스도 포함)의 중단점이 JVM으로 설정되고 무시되지 않습니다.
Spring Boot은 런타임에 컨트롤러의 내부 클래스를 생성합니다(이것은 오류 메시지에 나타나는 CGLIB 생성 내부 클래스입니다).JVM은 해당 클래스를 로드할 때 인클로저 유형(이 내부 클래스의 경우)의 줄 번호 중단점을 설정하려고 합니다.생성된 내부 클래스에는 라인 번호 정보가 없으므로(라인 번호 정보가 필요하지 않음), 언급된 오류 메시지와 함께 이 내부 클래스에 대한 중단점 설정이 실패합니다.
IDE는 인클로저 유형(컨트롤러 클래스 자체)을 로드할 때 줄 바꿈 지점을 설정하려고 시도하고 이를 성공시킵니다.이는 중단점 마커의 체크 표시를 사용하여 시각화됩니다.
따라서 표시되는 오류 메시지를 안전하게 무시할 수 있습니다.이 오류 메시지가 표시되지 않도록 하려면 환경설정(Java -> 디버그)으로 이동하여 "라인 번호 속성 누락으로 인해 중단점을 설치할 수 없을 때 경고"를 사용 불가능으로 설정할 수 있습니다.
이것이 여전히 관련이 있는지는 모르겠지만, 아마도 다른 선원이 이것이 유용하다는 것을 알게 될 것입니다.
이 메시지는 클래스 파일을 컴파일한 경우 디버그 플래그를 해제하면 나타납니다.
일식에서는 위에서 언급한 옵션을 사용하여 설정할 수 있습니다.
창 --> 환경설정 --> Java --> 컴파일러 --> 클래스 파일 생성: "생성된 클래스 파일에 줄 번호 속성 추가"
그러나 jar 파일이 있으면 컴파일된 출력을 얻을 수 있습니다.이 문제를 해결하는 쉬운 방법은 없습니다.
jar 파일을 가져올 소스 및 사용자 ant에 대한 액세스 권한이 있는 경우 다음과 같이 ant 태스크를 수정할 수 있습니다.
<javac destdir="${build.destDir}" srcdir="${build.srcDir}" source="1.6" fork="true" target="${javac.target}" debug="on" debuglevel="lines,vars,source" deprecation="on" memoryInitialSize="512m" memoryMaximumSize="1024m" optimize="true" >
디버깅을 완료했습니다.
참조: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm
이것은 저에게 효과가 있었습니다.
Window --> Preferences --> Java --> Compiler --> Classfile Generation
할 수 있는 모든 방법이 있어야 합니다.True
.- 든
debug="true"
build.xml<javac>
task.task.task. - 개미가 일으킨 전쟁으로 인해 Tomcat에 애플리케이션 배포
- Tomcat의 했습니다.
Debug
사용 중인 이클립스 버전과 기술(예를 들어 Aspect Java의 경우 Java JDT 또는 AJDT, C++ CDT)을 확실히 표시하면 도움이 될 것입니다.
자바 측에서, 나는 당신의 "컴파일러 옵션에서 확인란을 선택했다"가 이것을 언급한다고 생각합니다.
래아"에서Window --> Preferences --> Java --> Compiler --> Classfile Generation
Class file
True로 되어 있습니다.
- 변수 속성 추가,
- 줄 번호 추가,
- 원본 파일 이름 추가,
- 사용되지 않는 로컬 변수를 보존합니다.
프로젝트에 글로벌 수준(윈도우즈 기본 설정) 또는 프로젝트별 수준에서만 확인할 수 있습니까?
그리고 중단점을 설정하려는 클래스가 열렸는지 확인하십시오.
- 소스 중 하나입니다(타사 라이브러리에서 제공되지 않음).
- 입니다.
.java
조금도 아닌.class
?
모든 것을 청소하고 모두 재구축하고 잠재적인 병 충돌을 확인합니다.
다른 방법이 없으면 디버그 관점을 열고 기존 중단점을 모두 지우고 다시 설정합니다.
이클립스에서 Tomcat을 디버깅 모드로 시작하는 동안 이 문제가 발생했습니다.컴파일 및 배포를 담당하는 ANT 빌드 파일이 있었습니다.디버그 플래그를 true로 설정하고(다른 답변에서 언급한 바와 같이) 애플리케이션을 다시 배포한 후에는 정상적으로 작동했습니다.
<javac srcdir="./src/java" destdir="./bin" debug="true">
참고: 디버그 플래그를 추가하고 다시 컴파일한 경우에도 Eclipse가 클래스 파일을 디버깅하는 위치이므로 응용 프로그램을 서버에 다시 배포해야 합니다.매우 명백하지만 한 시간 정도 머리를 긁적이며 왜 그것이 작동하지 않는지 궁금해하는 데 시간을 보내는 것은 쉽습니다(저를 믿으세요).
변경을 시도합니다.jre
당신은 사용합니다.을 합니다.jre
의 에.JDK
대신.
6개의 다른 버전의 Java가 설치되어 있기 때문에 사용하고자 하는 Java 버전과 일치하도록 기본 JDK 규정 준수를 변경해야 했습니다.이클립스는 모든 것이 자바 1.6을 사용하여 빌드/컴파일될 때 기본적으로 컴파일러 컴플라이언스 수준이 자바 1.7로 설정되었습니다.
그래서 제가 한 일은
- 일식 메뉴에서 창->환경설정->자바->컴파일러로 이동합니다.
- JDK Compliance에서 Compiler Compliance level을 1.7에서 1.6으로 변경했습니다.
이제 Eclipse는 더 이상 "중단점 부재 라인 번호 정보를 삽입할 수 없음"에 대해 불평하지 않으며 디버깅 중단점이 실제로 작동합니다!!!
내 상황도 비슷했습니다.
- 나는 Junit 테스트를 디버깅하고 있었습니다.
- 모키토를 이용해서 스파이를 만들고 있었어요
spyTask = spy(new Task())
- 는 제가.
Task.java
)
이 가 이중점은실때문마제오생다니성합류를의다행할을 실행할합니다.Debug As... > JUnit Test
문제를 해결하기 위해 Breakpoint 'up'을 실제 테스트(TaskTest.java 내부)로 이동했습니다.실행이 중지되면 중단점을 원래 있던 위치(Task.java 내부)로 다시 추가했습니다.
여전히 같은 오류가 발생했지만 "확인"을 클릭한 후 중단점이 정상적으로 작동했습니다.
누군가에게 도움이 되길 바라며,
-gmale
제가 jetty server에서 만들고 ANT에서 새로운 .war 파일을 컴파일할 때도 같은 문제가 있었습니다.Java 컴파일러를 이전에 작성한 대로 설정한 후 동일한 버전의 jdk/jre 컴파일러 및 빌드 경로(예: jdk 1.6v33, jdk 1.7, ...)를 만들어야 합니다.
저는 모든 것을 했고 여전히 일을 하지 않았습니다.솔루션은 컴파일된 .class 파일과 생성된 war 파일의 대상을 삭제하고 이제 작동합니다.
Spring AOP(CGLIB 라이브러리에서 온 것으로 보임)와 함께 이 메시지를 받았습니다.무시를 클릭하면 정상적으로 작동하는 것 같습니다. 그래도 디버그할 수 있습니다.
저는 이 메시지에 대한 또 다른 이유를 찾았습니다.스칼라를 프로그래밍하고 있었어요솔루션은 다음과 같습니다.
- 실행 열기 -> 디버그 구성
- 기본 탭의 "적용" 및 "되돌리기" 단추 옆에 사용 중인 시작 프로그램을 나타내는 텍스트가 있고, 그 옆에 "기타 선택"이라는 하이퍼링크가 있습니다.이것은 이상한 UI 요소이며, 언뜻 보기에는 실행 가능해 보이지 않습니다.
- "Select other" 링크를 사용하여 "Scala Application(새 디버거) Launcher"를 선택합니다.다른 한 명은 스칼라와 작동하지 않는 것 같습니다.
이제 디버깅이 작동합니다.Scala IDE 플러그인을 설치했습니다. 플러그인이 없으면 이 옵션을 사용할 수 있습니다.
무엇보다도 제게는 효과가 없었습니다.아래 솔루션이 마침내 작동했습니다.디버그 구성 -> Classpath -> User Entries -> (디버깅할 프로젝트의 src 폴더 추가)
Tomcat에 배포된 WAR(여러 Eclipse 프로젝트 아티팩트로 구성됨)을 디버깅할 때도 이와 같은 문제가 있었습니다.
저는 ANT 빌드 스크립트를 사용하여 모든 것을 빌드하고 있습니다.이렇게 하는 경우 모든 Java 작업에 debug=true 플래그가 설정되어 있는지 확인합니다.이것이 나의 유일한 문제였습니다. 그것이 당신의 문제에 도움이 되기를 바랍니다!
JBoss 7.1에서도 같은 오류가 발생했습니다.그리고 저도 제피로와 같은 일을 했습니다.오류를 무시하고 정상적으로 중단점을 배치할 수 있었습니다.나의 경우, 나는 생각하는 건축가를 만들고 있었고 이것은 나의 javac 과제입니다.
<javac
srcdir="${src.dir}"
destdir="${build.classes.dir}"
includeantruntime="false"
debug="${debug}"
verbose="false"
debuglevel="lines,vars,source"
source="1.6"
target="1.6">
<!-- Sppressing warning for setting an older source without bootclasspath
(see: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source) -->
<compilerarg value="-Xlint:-options"/>
<classpath>
<fileset dir="${lib.dir}" includes="*.jar" />
<fileset dir="${jboss.lib.dir}" includes="**/*.jar" />
</classpath>
</javac>
저도 같은 문제가 있어서 해결책을 찾기 위해 많은 시간을 들였지만 해결책을 찾지 못했기 때문에 저는 모든 사례를 직접 연구했고, 마침내 JDK 버전 간의 충돌이 문제라는 것을 알게 되었습니다.다음은 문제를 해결하기 위한 단계입니다. 1.JDK 및 JRE 버전을 모두 제거하고 하나의 버전만 유지합니다. 2. JAVA_ 설정이클립스의 HOME 시스템과 자바 컴파일러는 동일합니다.위의 오류가 사라지지 않는 경우도 있지만 디버그 모델에서 실행할 수 있습니다.
할 때 했을 때, 저는 일단준모키사를토용때을때발다을생니잊, 는나추것습었을는하가했트류를 추가하는 을 잊었습니다.@PrepareForTest
정적인 수업을 위해.
아래 코드를 추가하면 문제가 해결됩니다.
@PrepareForTest({XXXXX.class})
같은 경우인지는 확실하지 않습니다.
제 문제는 2개의 JAR을 가지고 있었고 저는 그것의 주문에 따라 하나를 다른 것으로 재정의하려고 했습니다.Java Build Path => Order & Export
하나는 디버깅용이고 다른 하나는 디버깅용이 아니기 때문에 Eclipse의 탭입니다(디버깅 JAR이 순서의 첫 번째임).이런 식으로 했을 때, 저는 수동으로 소스를 첨부해야 했습니다.
비디버그 JAR을 제거하고 디버그 JAR을 \WEB-INF\lib\ 디렉토리, 청소, 빌딩 등에 배치해 보았더니 작동했습니다.이번에는 (첨부된 소스를 제거한 후) 소스를 수동으로 첨부할 필요 없이 자동으로 디버그 코드를 탐색할 수 있습니다.중단점 및 디버그도 작동했습니다.
여전히 문제가 있는 사람이 있을 경우를 대비하여 다른 답변에 언급된 다음과 같은 특정 솔루션을 모두 사용해 보았습니다.
- 한 후 확인합니다.
Add line number attributes...
- 으로 편집하기
org.eclipse.jdt.core.prefs
다른 답변에서 언급한 바와 같이: https://stackoverflow.com/a/31588700/1599699 - 디버그가 활성화된 상태에서 JAR이 생성되고 있는지 확인합니다.
- JDK 준수 수준을 1.6에서 1.7로 변경(이에 따라 사용하던 JDK와 일치)
또한 서버를 일반적으로 종료하고(java.exe가 실제로 닫혔는지 확인하고...), 두 프로젝트의 \build\ 디렉토리를 삭제하고, -clean 매개 변수로 Eclipse를 다시 시작하고, 디버그 JAR을 다시 만들고, 디버그 JAR이 있는 프로젝트를 새로 고치고, 정리하고, 디버그 모드에서 서버를 시작했습니다.게시/청소 및 중단점 지정.
저는 이클립스 IDE에서 같은 문제에 직면했습니다.저는 이 질문의 모든 답변을 읽고 언급된 거의 모든 설정을 시도했지만 실패했습니다.
그래서 프로젝트의 런타임 lib를 변경하려고 했는데, 이전에는 JRE - Java SE 1.8이었습니다.
저는 JRE를 JDK로 변경하려고 시도했고 그것은 저에게 효과가 있었습니다.
다음은 JRE에서 JDK로 전환하는 단계입니다.
- 프로젝트 마우스 오른쪽 버튼 클릭
- 속성 -> Java 빌드 경로를 클릭합니다.
- 선택 탭 - "라이브러리"
- 라이브러리 추가 단추를 누릅니다."라이브러리 추가" 창이 열립니다.
- "JRE System Library" -> "Next" 버튼을 클릭합니다.
- 대체 JRE를 선택합니다.
- Installed JRE 버튼 클릭
- 새 창에서 "추가"를 클릭합니다.이렇게 하면 "JRE 추가" 창이 또 열립니다.
- 표준 VM을 선택하고 다음을 클릭합니다.
- [디렉토리] 단추를 클릭합니다.
- "JDK" 설치 디렉토리의 경로를 선택한 후 [확인]을 누릅니다.그런 다음 마침을 클릭합니다.
이제 새로 추가된 "JDK"를 확인
목록에서 설치된 다른 모든 JRE 삭제(선택사항)
- 적용->확인
- 대체 JRE 드롭다운에서 "JDK"를 선택하고 "Finish"를 클릭합니다.
- 이제 아래에 설명된 목록에서 JRE 인스턴스를 제거합니다.
- 적용 -> 확인을 클릭합니다.
그리고 당신은 끝났습니다!!
제 이클립스 IDE에도 같은 오류가 있었습니다. 하지만 무시할 수 없는 오류인 것 같습니다.오류 대화 상자에서 확인을 누르고 계속 진행했습니다.중단점에 도달하여 디버그를 추가할 수 있었습니다.
다음을 확인/수행합니다.
"Windows --> 환경설정 --> Java --> 컴파일러 --> 클래스 파일 생성"에서 모든 옵션은 True여야 합니다.
(1) Add variable attributes...
(2) Add line number attributes...
(3) Add source file name...
(4) Preserve unused (never read) local variables
프로젝트의 .settings 폴더에서 org.eclipse.jdt.core.prefs라는 파일을 찾습니다.org.eclipse.jdt.core.compiler.debug.lineNumber=generate를 확인하거나 설정합니다.
오류 창이 계속 나타나면 확인란을 클릭하여 오류 메시지를 표시하지 않습니다.
프로젝트를 정리하고 빌드합니다.디버깅을 시작합니다.
일반적으로 오류 창은 더 이상 표시되지 않으며 디버깅 정보가 올바르게 표시됩니다.
저도 이 문제에 부딪혔습니다.저는 개미 빌드 스크립트를 사용하고 있습니다.저는 레거시 애플리케이션을 사용하고 있어서 jdk 버전 1.4.2를 사용하고 있습니다.예전에는 이게 효과가 있어서 저는 주변을 둘러보기 시작했습니다.JRE 탭의 Debug 구성에서 Java 버전이 1.7로 설정되어 있음을 알게 되었습니다.1.4로 다시 바꾸자 효과가 있었습니다.
이것이 도움이 되길 바랍니다.
로깅 관리자를 디버그하려고 했는데 jre를 jdk로 변경한 다음 디버그 구성의 "메인" 탭인 "Java Runtime Environment" | "runtime JRE"에서 이 jdk를 선택하면 모든 것이 정상입니다.
@ManagedBean(javax.notation)으로 클래스에 주석을 달았을 때 이 문제가 발생했습니다.Managed Bean).JBoss EAP 6.2.0에서 새로 준수한 앱을 실행할 때 경고 메시지가 나타납니다.이를 무시하고 실행하는 것은 도움이 되지 않았습니다. 중단점에 도달하지 못했습니다.
저는 JSF 페이지에서 EL을 사용하여 그 콩을 부르고 있었습니다.이제... @ManagedBean은 이에 적합하지 않을 수 있습니다(CDI가 처음입니다).주석을 @Model로 변경했을 때 빈이 실행되었지만 중단점 경고도 사라졌고 예상대로 중단점에 도달했습니다.
요약하자면, @ManagedBean 주석은 사용하기에 잘못된 주석인지 여부와 상관없이 라인 번호를 엉망으로 만든 것처럼 보였습니다.
언급URL : https://stackoverflow.com/questions/957822/eclipse-unable-to-install-breakpoint-due-to-missing-line-number-attributes
'source' 카테고리의 다른 글
병렬 목록이 주어지면 다른 목록을 동일한 방식으로 순열(재배치)하면서 하나를 정렬하려면 어떻게 해야 합니까? (0) | 2023.04.26 |
---|---|
모든 Git 태그를 나열하는 방법? (0) | 2023.04.26 |
AWS S3 CLI를 사용하여 BASH에서 stdout으로 파일을 덤프하는 방법은 무엇입니까? (0) | 2023.04.26 |
데이터 테이블 열 이름을 변경하는 방법 (0) | 2023.04.26 |
ObjectDataProvider를 통해 ComboBox를 일반 사전에 바인딩하는 방법 (0) | 2023.04.26 |