상세 컨텐츠

본문 제목

[생활코딩] JAVA1 - 직접 컴파일 및 실행하기(2)

Studying (Review)/JAVA

by 잼(JAM) 2021. 12. 10. 10:25

본문

반응형

라이브러리를 사용해 만든 자바 프로그램 컴파일하기

 

라이브러리 : 프로그래밍에 사용되는 잘 정돈된 도구

(참조 : https://en.wikipedia.org/wiki/Library_(computing))

 

내가 작성한 것이 아닌 외부에서 가져다 쓰는 클래스 등에 해당한다

 

.java로 된 라이브러리를 사용했다면 해당 라이브러리도 컴파일이 되어야 하기 때문에

프로그램과 라이브러리 모두 컴파일이 필요하다

 

예제)

import org.opentutorials.iot.Elevator; // Library 1
import org.opentutorials.iot.Lighting; // Library 2
import org.opentutorials.iot.Security; // Library 3

public class OkJavaGoInHome {

	public static void main(String[] args) {
		
		String id = "JAVA APT 507";
		
		// Elevator Call
		Elevator myElevator = new Elevator(id);
		myElevator.callForUp(1);
		
		// Security Off
		Security mySecurity = new Security(id);
		mySecurity.off();
		
		// Light On
		Lighting hallLamp = new Lighting(id + " / Hall Lamp");
		hallLamp.on();
		
		Lighting floorLamp = new Lighting(id + " / Floor Lamp");
		floorLamp.on();
		
	}

}

 

1. 프로그램 내의 라이브러리가 같은 디렉토리 내에 있는 경우(디렉토리가 일치할 때)

 

[cmd] 실행 후 javac 명령어를 통해 바로 컴파일이 가능하다

 

 

* 컴파일 시 unmappable character (0xE2) for encoding x-windows-949 오류가 발생하는 경우

javac *.java -encoding (해당인코딩) 으로 해결가능 (아래 내용 참조)

 


2. 프로그램 내의 라이브러리가 다른 디렉토리 내에 있는 경우

(디렉토리가 프로그램과 일치하지 않을 때)

 

디렉토리 확인(예제 코드의 import 부분을 확인하면 경로가 다름을 알 수 있다)

 

디렉토리가 일치하지 않기 때문에, javac 명령어 실행시 오류가 발생함

 

따라서 명시적으로 해당 디렉토리를 지정해서 컴파일을 해주어야 한다

(사용된 라이브러리가 존재하는 경로를 지정해서 컴파일 해주어야 함)

 

이 때 사용하는 명령어는 -cp(--class-path)이다.

javac -cp ".;(해당 경로명)" *.java 로 경로를 지정하면 컴파일이 가능하다

".;(해당 경로명)" 부분에서 마침표(.)는 '같은 디렉토리 내에 있는' 이라는 의미를 내포함

 

컴파일은 잘 마쳤지만 여전히 라이브러리의 경로가 다르기 때문에

프로그램 실행시 오류가 발생한다

 

따라서 프로그램 실행시에도 해당 라이브러리의 경로를 명시적으로 지정해 주어야 한다

-cp 명령어를 컴파일 할 때와 마찬가지 방법으로 프로그램 실행시에 사용해 주면 해결 가능하다

 

반응형

관련글 더보기

댓글 영역