일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- HTML
- Database
- class선택자
- Math.
- 라즈베리파이
- XHR
- Class
- CSS
- fatal: Not a valid object name: 'master'
- 생활코딩
- java
- API
- Java입문
- initial commit
- 프로그래머스
- 헌혈
- variable
- IOT
- helloworld!
- 상위 N개 레코드
- string
- Javascript
- SQL문제풀이
- Javaswing
- id선택자
- jdoodle
- AndroidDeveloper
- compile
- Javapopup
- 자바의정석
- Today
- Total
Sun의 정리정돈
[32/50]JAVA1-12.4. 직접 컴파일하고 실행하기 : 라이브러리 이용 본문
[32/50]JAVA1-12.4. 직접 컴파일하고 실행하기 : 라이브러리 이용
Sunday31 2022. 11. 1. 11:57이번에 사용할 예제는 OkJavaGoInHome.java 파일이다.
내가 만든 프로그램이 다른 사람이 만든 것을 이용하고 있다면 조금 더 복잡해진다.
new Elevator에서 Elevator의 코드는 위에 입력된 import org.opentutorials.iot.Elevator; 에서 끌어오는 것이다.
그리고 org~Elevator까지의 디렉토리를 'package'라고 부른다.
패키지 안의 Elevator.java를 컴파일한 class파일을 로딩하는 코드가 import org.opentutorials.iot.Elevator;인 것이다.
그리하여 Elevator를 입력해 이용할 수 있게 되는 것이다.
org 패키지 안의 class파일들을 전부 지우고 javac OkJavaGoInHome.java를 실행하면 어떻게 될까?
아무 일도 일어나지 않는다. (컴파일이 스스로 잘되었기 때문에 그런 것)
사실은 우리가 OkJavaGoInHome.java를 컴파일하면,
내부의 소스코드들은 패키지 안의 여러 파일들을 필요로 하기 때문에
java compiler가 패키지 안의 여러 파일들을 컴파일해 class 파일을 스스로 생성해낸다.
그러므로 아무 일도 일어나지 않은 것이다.
다시 class 파일을 삭제하고 새로운 폴더 ilb에 org 패키지를 넣고 컴파일하면 어떻게 될까?
에러가 주르륵 뜨며 package org가 존재하지 않는다는 메세지가 출력된다.
import org.opentutorials.iot.Elevator; 에서 org패키지의 경로가 변경되었기 때문에 끌어오기가 불가능해진 것이다.
이 경우에는 javac를 입력하여 -class path를 찾는다. -cp는 우리가 컴파일해야 할 class들이 어디에 있는 지 설명해준다.
정확히 javac -cp ".;lib" OkJavaGoInHome.java 라고 입력한다.
(-cp: 클래스를 찾아봐라 / ".": 현재 디렉토리나 / ;: 또는(마침이나 다음 것을 구분할 때 쓴다) / "lib": lib 폴더에서도 찾아봐라)
이렇게 입력하면 필요한 class 파일들이 자동으로 컴파일되어 다시 아무 일도 일어나지 않게 된다.
마지막으로 컴파일 아닌 java OkJavaGoInHom을 실행하여 보자.
Exception(예외, 보통 자바에서의 오류상황) 메세지가 뜬다. Elevator의 class를 찾을 수 없다고 쓰여있다.
위에서 lib폴더까지 찾아서 컴파일하라는 명령은 수행했지만, 만들어진 class 파일들이 당연하게도 lib 폴더의 경로 내에 존재하고 있기 때문이다.(안에 코드는 여전히 import org.opentutorials.iot.Elevator;로 lib이 경로에 없는 상황)
그래서 java의 실행도 위와 같이 class path를 이용해 lib도 찾아보라고 해야한다.
java -cp ".;lib" OkJavaGoInHome 라고 입력한다.
정상적으로 실행되는 것을 확인할 수 있다.
다른사람이 사용할 수 있도록 정리정돈 된 프로그램들을 Library라고 한다.
개발은 혼자하는 것이 아니기 때문에 타인의 Library를 자주 사용할 것이라는 점을 명시하기를 바란다.
'BackEnd > Java' 카테고리의 다른 글
[34/50]JAVA1-13.1. 자바 문서 보는 법 - API vs UI (0) | 2022.11.01 |
---|---|
[33/50]JAVA1-12.5. 직접 컴파일하고 실행하기 - 입력과 출력 (0) | 2022.11.01 |
[31/50]JAVA1-12.3. 직접 컴파일하고 실행하기 : 컴파일과 실행하기 (0) | 2022.10.31 |
[30/50]JAVA1-12.2. 직접 컴파일하고 실행하기 : 실행환경 살펴보기 (0) | 2022.10.30 |
[29/50]JAVA1-12.1. 직접 컴파일하고 실행하기 : 소개 (0) | 2022.10.27 |