can not find symbol 의 컴 파일 오 류 를 어떻게 검사 합 니까?

원문 연결http://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean
 
Cannotfind 기호 가 무엇 을 의미 하 는 지
우선, 그것 은 컴 파일 오류 로 원본 코드 에 문제 가 있 거나 컴 파일 방식 에 문제 가 있다 는 것 을 의미 합 니 다.
당신 의 소스 코드 는 다음 과 같은 부분 으로 구성 되 어 있 습 니 다.
Ø  키워드: 예 를 들 어 true false  class while 등등
Ø  액면가 ’x 와 "Hi mum!" 등등.
Ø  연산 자 와 다른 비 자모 숫자 기호: 예 를 들 어  +  =  {등등
Ø  주석 과 공백 칸
 
cannot find symbol 의 오 류 는 식별 자 에 관 한 것 입 니 다. 코드 를 컴 파일 할 때 컴 파일 러 는 코드 에 있 는 모든 식별 자의 의 미 를 알 아야 합 니 다. 이러한 오 류 는 컴 파일 러 가 코드 가 가리 키 는 것 을 이해 하지 못 한 다 는 것 을 의미 합 니 다.
 
cannot findsymbol 오 류 를 일 으 키 는 원인
결국 컴 파일 러 가 정의 되 어야 할 모든 식별 자 를 찾 았 기 때 문 일 것 입 니 다. 많은 원인 이 있 습 니 다. 흔히 볼 수 있 는 것 은 다음 과 같 습 니 다.
l  통용 식별 자
  • 이름 맞 춤 법 오류: 예 를 들 어 StringBiudler 는 StringBuilder 가 아 닙 니 다. 자바 는 나 쁜 맞 춤 법 이나 입력 오 류 를 보완 하려 고 하지 않 습 니 다
  • 대소 문자 오류: 예 를 들 어 stringBuilder 는 StringBuilder 가 아 닙 니 다. 모든 자바 식별 자 는 대소 문자 가 민감 합 니 다
  • 밑줄 사용 이 정확 하지 않 습 니 다. 예 를 들 어 my string 과 my string 은 다 릅 니 다. (자바 의 스타일 규칙 을 엄 격 히 따 르 면 이런 오 류 를 어느 정도 피 할 수 있 습 니 다)
  • l  변수 식별 자
  • 성명 변 수 를 잊 어 버 리 기
  • 변수 성명 범 위 는 사용 하려 는 점 을 덮어 쓸 수 없습니다
  • l  방법 명 식별 자
     계승 방법 을 인용 하려 고 했 을 지 모 르 지만 아버지 / 조상 류 / 인터페이스 에서 정의 되 지 않 았 습 니 다.
    l  클래스 식별 자
  •  가 져 오기 클래스 잊 어 버 리 기
  • star 로 가 져 왔 지만 이 종 류 는 가 져 온 가방 에서 정의 되 지 않 았 습 니 다
  • new 키 워드 를 잊 고 사용: 예 를 들 어 Strings = String ();
  • 일반적인 문 제 는 상기 몇 가지 원인 으로 인해 발생 할 수 있 습 니 다. 예 를 들 어, 당신 의 별표 가 java. io. * 를 가 져 오고 Files 클래스 를 사용 하려 고 시도 할 수도 있 습 니 다. (java. io 가 아 닌 java. nio 가 존재 합 니 다) 사실 당신 은 File (java. io 가 존재 하 는 클래스) 을 쓰 려 고 합 니 다.
     
     
    다음은 부정 확 한 변수 방위 로 인해 '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' 를 잘못 보고 했다 고 가정 하면 수정 할 수 있 는 방법 이 많 습 니 다.
  • 안에 있 는 for 를 for (int j = 1; j < 10; j + +) 로 합 니 다.       --그 럴 가능성 이 높 아 요.
  • 안쪽 이나 바깥쪽 for 순환 전에 j 성명 을 추가 하거나      --이 가능 하 다, ~ 할 수 있다,...
  • 내 순환 j 를 I 로 변경   --틀 릴 가능성 이 높다
  • 오 류 를 정확하게 수정 하기 위해 서 는 코드 가 무엇 을 하려 고 하 는 지 이해 하 는 것 이 관건 이다.
     
    모호 한 원인
    다음은 '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 를 사용 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기