추가정보
Path 시스템 변수 설정
cmd에 javac 라고 입력한다. javac는 java파일을 컴파일해서 class파일을 만들어주는 역할을 한다. cmd를 자세히보면 Usage가 있다.
Usage: javac <options> <source files>
앞에서 이미 찾아둔 Usage에 맞게 cmd에 입력해준다. "javac + (Source files)파일경로"
이때, javac.exe가 위치해 있는 경로가 path에 등록되어 있는 상태여야 javac를 사용할 수 있다.
dir 명령어로 디렉토리 내부 구조를 다시 보면 .class파일이 생긴 것을 확인할 수 있다.
이 class파일은 컴퓨터가 이해할 수 있는 상태로 바꾼 것이다(compile).
JVM(java)이 OS에 설치되어 있다는 전제하에 컴퓨터가 이해할 수 있다.
이전에 만든 파일 중 외부 라이브러리 객체를 사용하는 프로그램을 선택해 직접 컴파일을 해본다. 'OKJavaGoinHome'이라는 프로그램이다. 코드에서 Elevator와 관련된 코드가 없음에도 사용할 수 있는 이유는 위에서 import를 통해 OKJavaGoinHome 클래스가 있는 폴더의 org.opentutorials.iot의 클래스들을 불러들이고 있기 때문이다.
테스트를 위해서 lib라는 parent폴더를 만들어주고 org 폴더를 그 아래로 복붙한다. .class파일은 모두 삭제한다. org.opentutorials.iot 패키지는 OKJavaGoinHome과 동일한 위치에 있지 않고 lib 라이브러리의 일부가 되었다. 이때 다시 컴파일 한다면?
우리가 컴파일하는 파일과 같은 디렉토리에 있지 않기 때문에 error가 나오게 된다. 해결을 위해 cmd에 javac 명령어를 입력해본다. 그럼 아래 class path라는 것이 나온다. 컴파일하려고 하는 클래스들이 어디에 있는지 이야기해주어야 찾아가서 실행할 수 있다는 내용이다.
cmd에 javac를 입력하고 '-cp'를 입력한다. '-cp'는 클래스를 여기서 찾아주세요'라는 것으로 쌍따옴표 안에 ".;lib"를 쓰면 '.'은 현재 디렉토리를 말하고 ';(윈도우의 경우는 세미콜론)', lib 디렉토리에서도 추가로 찾아봐달라는 뜻이다. 엔터를 했을 때 아무런 에러도 뜨지 않으면 제대로 컴파일 되어서 삭제했던 모든 class 파일들이 다시 생긴 것이다.
그럼 제대로 실행하는지 다시 cmd에 'java OKJavaGoinHome'을 입력해보는데 Exception이 나오면서 Elevator를 찾을 수 없다고 나온다. 이유는 Elevator가 lib 아래에 있기 때문이다. '-cp'를 통해서 lib 아래도 찾아보라고 명령해준다. '-cp'에 lib만 입력해주면 자바를 실행시키는 디렉토리에서만 'OKJavaGoinHome' 클래스파일을 찾도록 약속되어 있기 때문에 현재 디렉토리에서도 찾도록 표시해주어야 한다.
현재 디렉토리에서 OKJavaGoinHome.class 파일을 열어서 실행시키다가 elevator가 있으면 lib의 클래스 파일을 찾아서 실행시키는 것이 되는 것이다.