자바 명령 행 에서 파일 을 컴 파일 하 는 중 오류 가 발생 했 습 니 다. 기호 나 패 키 지 를 찾 을 수 없습니다.

자바 명령 행 에서 파일 을 컴 파일 하 는 중 오류 가 발생 했 습 니 다. 기호 나 패 키 지 를 찾 을 수 없습니다.
탭 (공백 구분): 자바
레 퍼 런 스http://stackoverflow.com/questions/6665420/package-does-not-exist-error 레 퍼 런 스http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html
부대 코드 업로드:http://download.csdn.net/detail/qq369201191/9287185
eclipse 의 자동 컴 파일 에 익숙 합 니 다. 자바 명령 행 컴 파일, 실행 파일 은 가장 기본 적 인 부분 만 있 습 니 다. 단일 파일 에 대한 컴 파일 과 실행 이 며 외부 JAR 패키지 도 포함 되 지 않 습 니 다.그러나 가끔 은 명령 행 을 사용 하지 않 으 면 문제 가 생 길 수 있 습 니 다. 블 로 거들 은 여기 서 몇 가지 흔히 볼 수 있 는 문제 와 해결 방법 을 제시 합 니 다.
실험 환경 소개
Java命令行编译文件时出现的错误,找不到符号或软件包不存在等_第1张图片 eclipse 의 작업 디 렉 터 리 는 D:\myeclipse\Workspaces 에 있 습 니 다. 그 안에 우리 의 프로젝트 example 가 있 습 니 다. 클릭 하면 eclipse 가 우리 에 게 설정 한 몇 개의 파일 .settings, bin, src, .classpath, project 에 저 장 된 것 은 소스 코드 이 고 구 조 는 위의 그림 과 같 습 니 다.
eclipse 가 져 온 후 표 시 된 구 조 는 다음 그림 과 같 습 니 다. Java命令行编译文件时出现的错误,找不到符号或软件包不存在等_第2张图片 팁: 패키지 이름 srccom.example.controller 폴 더 아래 에 controller. java 파일 이 있 는 것 을 말 합 니 다.src/com/example/controller 는 독립 된 클래스 로 외부 패키지 가 져 오지 않 음 model.java 가 져 오기 controller.java com.example.model.model 가 져 오기 view.java 와 외부 Jar 패키지 가 호출 되 었 습 니 다.
사례 코드 를 관찰 할 때 명령 행 의 현재 디 렉 터 리, 옵션 매개 변수 와 자바 파일 에 특별한 주의 가 필요 합 니 다. 결과 가 다 를 수 있 습 니 다.
절대 경로 사용
절대 경 로 는 루트 디 렉 터 리 에서 시작 하 는 경로 입 니 다. Windows 아래 는 'C: \', Linux 아래 는 슬 래 쉬 로 시작 합 니 다. / home.
절대 경 로 를 사용 하 는 장점 은 명령 행 의 현재 경로 가 어디 에 있 든 정확하게 컴 파일 할 수 있다 는 것 이다.
사례 1
D:\myeclipse\Workspaces\example>javac D:\myeclipse\Workspaces\example\src\com\example\model\*.java

사례 2
D:\myeclipse\Workspaces\example\src>javac D:\myeclipse\Workspaces\example\src\com\example\model\*.java

상대 경로 사용
  • 상대 경 로 는 현재 문맥 환경 에 비해 명령 행 에서 상대 명령 행 의 앞 경로 입 니 다.
  • 상대 경 로 는 / 로 시작 하지 않 고 직접 파일 이름 입 니 다.

  • 예 를 들 어 사례 1 에서 현재 경 로 는 com.example.controller.controller 이 고 이 경로 에 비해 자바 파일 의 상대 경 로 는 D:\myeclipse\Workspaces\example\src 입 니 다.사례 2 에서 현재 경로 가 변화 하고 해당 하 는 자바 파일 의 상대 경로 도 변화 가 있 습 니 다.
    사례 1
    D:\myeclipse\Workspaces\example\src>javac com/example/model/*.java

    사례 2
    D:\myeclipse\Workspaces\example>javac src/com/example/model/*.java

    기본 개념 은 이미 이해 되 었 습 니 다. 건어물, 일반 명령 행 컴 파일 에 나타 난 문제:
    문제 1: 기호 나 패 키 지 를 찾 을 수 없습니다. 존재 하지 않 습 니 다.
    사례 1
    D:\myeclipse\Workspaces\example\src>javac com/example/controller/*.java

    이 경우 정상적으로 컴 파일 할 수 있 습 니 다. classpath 를 지정 하지 않 기 때문에 일반 시스템 의 기본 classpath 는 현재 경로 에서 검색 합 니 다.
    사례 2
    D:\myeclipse\Workspaces\example>javac src/com/example/controller/*.java
    
      
    src\com\example\controller\controller.java:3:     com.example.model    

    우 리 는 디 렉 터 리 를 바 꾸 었 습 니 다. 위의 절대 경로, 상대 경로 에 대한 지식 을 가지 고 자바 파일 의 경 로 를 정확하게 알려 주 었 습 니 다.이 때 오류 가 발생 할 수 있 습 니 다. 패키지 com/example/model/*.java 가 존재 하지 않 습 니 다.com.xxx 파일 중 하나 controller.java 가 있 기 때문에 시스템 기본 import com.example.model.model 에 따라 현재 경로 에서 찾 습 니 다. 즉 classpath 이 경로 에 파일 이 없 음 이 분명 합 니 다 D:\myeclipse\Workspaces\example.
    해결 방법 은 컴 파일 러 에 게 어떤 디 렉 터 리 에 있 는 지 알려 주면 되 기 때문에 옵션 - cp xxxx 또는 - classpath xxxx 를 추가 해 야 합 니 다.
    D:\myeclipse\Workspaces\example>javac -cp src src/com/example/controller/*.java

    인자 com 를 더 해서 컴 파일 러 에 게 src 에서 찾 을 수 있다 고 알려 주면 문제 가 없 을 것 이다.
    마찬가지 로 -cp src 는 상대 적 인 경로 일 수도 있 고 절대적 인 경로 일 수도 있다. 본 사례 에서 사용 하 는 것 은 상대 적 인 경로 이 고 명령 행 이 경 로 를 바 꾼 후에 모든 매개 변 수 는 바 꿔 야 한다.
    D:\myeclipse\Workspaces>javac -cp example/src example/src/com/example/controller/*.java

    다음은 절대 경로 로 쓴 것 입 니 다. 상대 경로 와 절대 경로 아래 는 더 이상 서술 하지 않 습 니 다.
    javac -cp D:\myeclipse\Workspaces\example\src example/src/com/example/controller/*.java

    질문 2: JAR 가방 어떻게 도입
    우선 eclipse 에서 연결 하 는 것 이 좋 습 니 다. classpath 파일 을 만 든 다음 에 JAR 가방 을 모두 여기에 넣 으 면 프로젝트 이전 에 도 편리 합 니 다.
    사례 1
    D:\myeclipse\Workspaces\example\src>javac com/example/view/view.java
    
      
    com\example\view\view.java:4:     com.google.gson    
    import com.google.gson.Gson;
                          ^
    com\example\view\view.java:14:      
      :   Gson
      :   com.example.view.view
                    Gson gson = new Gson();
                    ^
    com\example\view\view.java:14:      
      :   Gson
      :   com.example.view.view
                    Gson gson = new Gson();
                                    ^
    3   

    사실 한 가지 문제 로 JAR 가방 을 찾 지 못 했 습 니 다.JAR 도입 은 JAR 가방 의 구체 적 인 위치 에 경 로 를 기록 하 는 것 을 주의해 야 한다.잔말 말고 예 를 들 어 라.
    사례 2
    D:\myeclipse\Workspaces\example\src>javac -cp lib/gson-2.3.1.jar com/example/view/view.java
    
      
    com\example\view\view.java:3:     com.example.controller    
    import com.example.controller.controller;
                                 ^
    com\example\view\view.java:10:      
      :   controller
      :   com.example.view.view
                    new controller();
                        ^
    2   

    세심 한 당신 은 문제 가 변 했다 는 것 을 알 게 될 것 입 니 다. 우리 가 JAR 가방 을 도 입 했 기 때문에 JAR 이 찾 지 못 하 는 GSON 문제 가 사 라 졌 습 니 다. 현재 의 문 제 는 찾 지 못 하 는 것 lib 이 문제 가 되 는 것 입 니 다.여기 서 설명 하 자 면, 우 리 는 - cp xxxx 또는 - classpath xxxx 에 가입 한 후에 시스템 의 classpath 를 덮어 씁 니 다. 사례 2 를 이렇게 쓰 면 확실히 GSON 류 를 찾 을 수 있 지만, com.xxxx 를 만 났 을 때 lib / gson - 2.3.1. jar 파일 에서 찾 을 수 없 기 때문에 잘못 보 고 했 습 니 다.방법 은 간단 합 니 다. import com.example.model.model 폴 더 의 경 로 를 추가 하 는 것 이 맞습니다. 바로 현재 경로 입 니 다.그래서 com.xxxx 까지.이제 자바 환경 을 처음 설정 할 때 classpath 의 경로 .;lib/gson-2.3.1.jar 에 대해 이해 하 셨 습 니까?
    특히 주의해 야 할 것 은 리 눅 스에 서 는 콜론 으로 구분 하고 윈도 에 서 는 분점 으로 분할 하 는 것 이다.
    사례 3
      
    D:\myeclipse\Workspaces\example\src>javac -cp .;lib/gson-2.3.1.jar com/example/view/view.java

    질문 3: class 파일 저장 위 치 를 지정 합 니 다.
    기본적으로 클 라 스 파일 과 자바 파일 은 하나의 디 렉 터 리 에 저장 되 어 있 지만, eclipse 컴 파일 후 두 개의 디 렉 터 리 가 있 는 것 을 발견 하지 못 했 습 니 다. 하 나 는 src 이 고, 하 나 는 사용자 가 편집 한 소스 코드 이 며, 하 나 는 빈 파일 이 고, 컴 파일 된 바이트 코드 입 니 다.그것 은 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 옵션 을 추가 했다.
    D:\myeclipse\Workspaces\example\src>javac -d ../bin com/example/model/model.java

    여기 서 빈 파일 과 src 파일 은 같은 등급 (실험 환경 소개 참조) 이 고 상대 적 인 경 로 를 사용 합 니 다.파일 을 열 면 빈 파일 에 계층 구 조 를 가 진 디 렉 터 리 가 생 성 되 었 음 을 알 수 있 습 니 다.
    여기까지 나 는 네가 번역 할 때의 문 제 를 기본적으로 해결 할 수 있 을 것 이 라 고 믿는다.
    총결산
    본 고 는 몇 가지 흔히 볼 수 있 는 문제 해결 방안 을 제 시 했 는데 상기 코드 는 모두 실험 을 거 쳤 기 때문에 문제 가 없 을 것 이다.명령 행 에서 우 리 는 상대 적 인 경로 와 절대 경로 의 차 이 를 주의해 야 한다. 이미 Linux 아래 와 Windows 아래 의 구분자 의 차이 (Linux 는 콜론, Windows 아래 는 분점) 가 있다.또한 classpath 를 설정 할 때 현재 경 로 를 추가 합 니 다.
    이상 의 내용 은 블 로 거들 이 일부 자 료 를 조회 하고 정 리 를 한 것 이다. 원래 공식 문 서 를 열심히 연구 하려 고 했 지만 전체 영어 이 고 구체 적 이기 때문에 포기 했다.앞으로 문제 에 부 딪 히 면 계속 보완 해 야 한다.만약 상술 한 문제 가 있다 면, 제때에 지적 해 주 십시오. 교 류 를 환영 합 니 다!

    좋은 웹페이지 즐겨찾기