자바 명령 행 에서 파일 을 컴 파일 하 는 중 오류 가 발생 했 습 니 다. 기호 나 패 키 지 를 찾 을 수 없습니다.
탭 (공백 구분): 자바
레 퍼 런 스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 패키지 도 포함 되 지 않 습 니 다.그러나 가끔 은 명령 행 을 사용 하지 않 으 면 문제 가 생 길 수 있 습 니 다. 블 로 거들 은 여기 서 몇 가지 흔히 볼 수 있 는 문제 와 해결 방법 을 제시 합 니 다.
실험 환경 소개
eclipse 의 작업 디 렉 터 리 는
D:\myeclipse\Workspaces
에 있 습 니 다. 그 안에 우리 의 프로젝트 example
가 있 습 니 다. 클릭 하면 eclipse 가 우리 에 게 설정 한 몇 개의 파일 .settings
, bin
, src
, .classpath
, project
에 저 장 된 것 은 소스 코드 이 고 구 조 는 위의 그림 과 같 습 니 다.eclipse 가 져 온 후 표 시 된 구 조 는 다음 그림 과 같 습 니 다. 팁: 패키지 이름
src
은 com.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 를 설정 할 때 현재 경 로 를 추가 합 니 다.
이상 의 내용 은 블 로 거들 이 일부 자 료 를 조회 하고 정 리 를 한 것 이다. 원래 공식 문 서 를 열심히 연구 하려 고 했 지만 전체 영어 이 고 구체 적 이기 때문에 포기 했다.앞으로 문제 에 부 딪 히 면 계속 보완 해 야 한다.만약 상술 한 문제 가 있다 면, 제때에 지적 해 주 십시오. 교 류 를 환영 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
javac,java 패키지 명령 실례자바 개발에서 IDE 도구를 사용하면 개발 효율을 어느 정도 높일 수 있지만 때때로 자바 명령으로 서버에서 자바 프로젝트 코드를 시작하여 일련의 기능을 완성해야 하기 때문에 당연히 ANT를 사용하는 것도 매우 편리하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.