can not find symbol 의 컴 파일 오 류 를 어떻게 검사 합 니까?
6313 단어 symbol자바error컴 파일 오류잘못 을 보고 하 다
Cannotfind 기호 가 무엇 을 의미 하 는 지
우선, 그것 은 컴 파일 오류 로 원본 코드 에 문제 가 있 거나 컴 파일 방식 에 문제 가 있다 는 것 을 의미 합 니 다.
당신 의 소스 코드 는 다음 과 같은 부분 으로 구성 되 어 있 습 니 다.
Ø 키워드: 예 를 들 어 true false class while 등등
Ø 액면가 ’x 와 "Hi mum!" 등등.
Ø 연산 자 와 다른 비 자모 숫자 기호: 예 를 들 어 + = {등등
Ø 주석 과 공백 칸
cannot find symbol 의 오 류 는 식별 자 에 관 한 것 입 니 다. 코드 를 컴 파일 할 때 컴 파일 러 는 코드 에 있 는 모든 식별 자의 의 미 를 알 아야 합 니 다. 이러한 오 류 는 컴 파일 러 가 코드 가 가리 키 는 것 을 이해 하지 못 한 다 는 것 을 의미 합 니 다.
cannot findsymbol 오 류 를 일 으 키 는 원인
결국 컴 파일 러 가 정의 되 어야 할 모든 식별 자 를 찾 았 기 때 문 일 것 입 니 다. 많은 원인 이 있 습 니 다. 흔히 볼 수 있 는 것 은 다음 과 같 습 니 다.
l 통용 식별 자
계승 방법 을 인용 하려 고 했 을 지 모 르 지만 아버지 / 조상 류 / 인터페이스 에서 정의 되 지 않 았 습 니 다.
l 클래스 식별 자
다음은 부정 확 한 변수 방위 로 인해 'cannot find symbol' 오류 가 발생 한 예 입 니 다.
for (int i = 0; i < strings.size(); i++) {
if(strings.get(i).equalsIgnoreCase("fnoord")) {
break;
}
}
if (i < strings.size()) {
...
}
i 를 미리 밝 혔 음 에 도 불구 하고 성명 의 범 위 는 for 구문 과 순환 체 에 있 을 뿐 두 번 째 if 구문 의 i 인용 은 이 성명 을 볼 수 없습니다. 두 번 째 if 문 구 를 순환 체 에 옮 기거 나 순환 외 에 i 변 수 를 다시 설명 하 는 것 이 적당 합 니 다.
명령 행 에서 컴 파일 을 한다 면 다른 클래스 를 컴 파일 하거나 컴 파일 하 는 것 을 잊 어 버 려 서 컴 파일 러 가 이러한 오 류 를 보고 할 수도 있 습 니 다. 예 를 들 어 foo 와 Bar 류 가 있 으 면 foo 는 Bar 에 사 용 됩 니 다. Bar 컴 파일 을 잊 고 javac foo. java 를 뛰 어 다 니 면 컴 파일 러 가 cannot find symbol 오 류 를 받 습 니 다. 간단 한 해결 은 바로 javac foo. java Bar. 자바 또는 자바 입 니 다.자바 c *. 자바. Ant, Maven, Gradle 등 자바 구축 도 구 를 사용 하 는 것 이 좋 습 니 다.
이러한 종류의 오 류 를 어떻게 수정 합 니까?
일반적으로 오 류 를 일 으 키 는 원인 을 파악 한 다음 에 코드 가 무엇 을 해 야 할 지 생각 하고 마지막 으로 정확 한 수정 을 선택한다.
주의 하 세 요. 모든 수정 이 적당 한 것 은 아 닙 니 다. 예 를 들 어 이것 입 니 다.
for(int i =1; i <10; i++){
for(j =1; j <10; j++){
...
}
}
컴 파일 러 가 'cannot findsymbol for j' 를 잘못 보고 했다 고 가정 하면 수정 할 수 있 는 방법 이 많 습 니 다.
모호 한 원인
다음은 'cannot find symbol' 오류 가 명확 하지 않 은 경우 입 니 다.
1. 원본 코드 를 검사 하지 않 았 습 니 다: 이러한 상황 은 초보 자 에 게 발생 합 니 다. 자바 도구 체인 의 작업 절차 나 중복 구축 가능 한 과정 을 아직 알 지 못 했 습 니 다. 예 를 들 어 IDE / ant / Maven 등 을 사용 합 니 다. 이러한 상황 에서
2. IDE 문제: 사용자 피드백 IDE 혼동 이나 컴 파일 러 가 실제 존재 하 는 클래스 를 찾 지 못 하 는 등 문제 가 있 었 습 니 다.
a) IDE 캐 시가 파일 시스템 과 동기 화 되 지 않 으 면 오류 가 발생 합 니 다.
b) IDE 버그 일 수 있 습 니 다. 예 를 들 어 @ Joel Costigliola 가 설명 한 Eclipse 는 Maven "test" 트 리 의 문 제 를 정확하게 처리 할 수 없습니다. 참고 하 십시오.http://stackoverflow.com/a/37207223/139985
3. 시스템 클래스 재 정의: substring 이 다음 장면 에서 알 수 없 는 기호 라 는 컴 파일 러 오류 가 있 었 습 니 다. 그 결과 프로그래머 가 자신의 String 클래스 를 만 들 었 고 이 클래스 에 substring 방법 이 정의 되 지 않 았 습 니 다. (유 니 버 설 라 이브 러 리 이름 으로 자신의 클래스 를 명명 하지 않도록 주의 하 십시오)
String s = ...
String s1 = s.substring(1);
4. 동 형 자: 원본 코드 가 utf - 8 을 사용한다 면, 일부 식별 자 는 비슷 한 형태 로 의미 가 다 를 수 있 습 니 다. utf - 8 에 동 형 자 를 포함 하고 있 기 때 문 입 니 다. 이 를 피하 기 위해 ASCII 나 Latin - 1 만 사용 하여 인 코딩 하고 자바
\uxxxx
。
를 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
면접문제 - 편평화 수조면접에서 편평한 수조의 제목을 자주 볼 수 있다. 함수를 써서 입력수조[1, [2, [3, [4]], 5]]를 [1, 2, 3, 4, 5]의 형식으로 바꾸는 것이다. 처음에 나는 이 문제를 통해 귀속적인 사용을 고찰...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.