-chapter8은 메모장과 명령프롬프트를 이용한다.-



<1> 클래스 패스(class path)의 지정 

 - 클래스 패스 : 클래스의 경로 (클래스가 존재하는 경로) 프로그램의 실행과정에서 클래스를 찾을 때 클래스패스를 기준으로 찾음. 


 1. 컴파일된 클래스 파일의 위치를 이동시킵시다 

1) myclass라는 디렉토리(폴더) 만들기. 

2) 다음의 .java 파일 작성해서 myclass 디렉토리 안에 저장하기



3) 명령프롬프트 (cmd.exe) 로 컴파일 한 후 myclass 디렉터리 안을 확인하면 다음과 같다.



4) 실행 후 결과.



5) myclass 안에 mysubclass 라는 서브디렉토리를 만들어 그 안에 AAA.class 와 BBB. class 파일을 넣는다



6) 다시 ClassPath.java 파일을 실행한 결과! 




: ClassPath.class 는 실행되는 디렉토리에 존재하니 이 파일은 쉽게 찾을수 있다. 문제는 AAA.class, BBB.class. 

기본적으로 아무 설정도 하지 않으면 java.exe가 실행된 디렉터리에서만 가상머신에 올려질 클래스를 찾는다. 


-> "java.exe 를 실행한 현재 디렉터리의 서브 디렉토리인 mysubclass 디렉터리에서 클래스를 찾아보세요" 라는 메세지를 전달해야 한다. 


*명령프롬프트가 위치하는 현재 디렉터리 : cd 커맨드를 이용해서 이동하는 위치 

바로 위의 에러 사진에서는 C:\java\myclass> 라고 써 있기 때문에 명령 프롬프트의 현재 위치는 C:\java\myclass 이다. 


2. 환경변수 (Environment Variable) :

1) 계산기와 파일탐색기의 실행 





: 계산기 (calc.exe) 와 파일탐색기 (explorer.exe)가 명령프롬프트의 현재 위치 (C:\java\myclass) 안에 있지 않지만 실행된다. 


2) 다른프로그램의 실행 능력을 지니는 명령프롬프트는 환경변수 path를 참조하여 실행파일의 위치를 참색한다. 

- 환경변수 : 명령프롬프트상에서 프로그램을 실행할 때 해당 프로그램의 실행파일을 찾는 경로, 환경변수에 포함되면 현재 위치가 어디든 실행할 수 있다. 

- echo %path%로 환경변수 찾기 (echo : 출력 , %path% : 환경변수) : 환경변수 parh에 지정된 정보(문자열형태) 확인

 : 엄청 많은 결과. 세미콜론으로 각각의 데이터들이 구분된다. 


- 저 환경변수에는 

. : 현재 디렉터리

C:\WINDOWS\system32 : 계산기, 탐색기가 있는 디렉터리

C:\Program Files\java\jdk1.8.0_121\bin : javac.exe , java.exe가 있는 디렉터리 

이 들어있음. 



3. 환경변수에 classpath 설정하기

: 환경변수는 path 하나만 존재하는 것 x. 필요에 따라서 얼마든지 추가할 수 있다. 

java는 클래스의 검색 경로를 지정할 수 있도록 classpath라는 환경변수 정의  

-> 클래스의 경로정보를 classpath라는 환경변수에 추가함으로 인해 클래스의 검색 경로 확장 가능. 


1) classpath에 설정되어있는 문자열 정보 확인  : echo %classpath%

- 아무런 classpath도 설정되어 있지 않을때의 결과

- 환경변수 추가하기 - 현재 디렉터리(.) : set classpath=,;


↓ 클래스패스 추가와 확인 

*이런과정을 거치지 않아도 원래 현재 디렉터리는 기본적인 클래스파일의 탐색경로에 포함된다. 




4. 문제해결을 위한 classpath의 설정 : 이전에 했던 classpath.java 실행하기  

1) 이전(classpath.java)의 실행 : myclass의 서브디렉토리인 mysubclass 디렉토리 안의 AAA.class와 BBB.class를 찾지 못해 오류. 

-> mysubclass 디렉터리를 classpath에 추가해야 한다. 


2) classpath추가 방법 1. 드라이브 명을 포함하는 완전경로 지정하기 

set classpath = .;C\java\myclass\mysubclass; 

(하는 사람마다 다르다. 각자의 경로를 써야함 -절대경로)



3) classpath추가 방법 2. 상대경로로 지정하기 


set classpath=.;.\mysubclass;



(** '.' : 현재위치 , '\' : 자식폴더 , '..' : 부모폴더)




5.  


+ Recent posts