본문 바로가기
Develop/Java

14 자바 Java 클래스패스 예제

by 구운밤이다 2016. 9. 24.
728x90
반응형

2016/09/12 - [IT/Java] - 13 자바 Java 생성자

이번 시간에는 자바의 클래스패스를 다루는 법을 알아보도록 하겠습니다. 그에 앞서 먼저 클래스패스가 무엇인지 알아봐야겠죠? 


클래스패스 Class Path


클래스 패스는 클래스의 경로를 뜻하는데요! 자바가상머신 즉 Java VirtualMachine이 프로그램을 실행할 때, 필요한 클래스를 이 클래스패스를 통해서 찾게 됩니다. 그럼 예제를 통해 클래스 패스를 한번 알아보도록 하겠습니다. 


class Class {

public void show() {

System.out.println("class");

}

}


class Path {

public void show() {

System.out.println("path");

}

}


class ClassPath() {

public static void main(String args[]) {

Class c=new Class();

c.show();

Path p=new Path();

p.show();

}

}


일단 메모장으로 이렇게 작성하신 후에 명령 프롬프트 창을 켜서 컴파일해주시면 이런 파일들이 생성되실 겁니다.



그러고 나서 이 폴더 안에 폴더 하나를 더 만들어서 이 두 클래스 파일을 이동시키고 실행하면 실행이 되지 않을 껍니다. 저는 subdir라는 폴더를 만들어 옮겼어요. 여기서 왜 실행이 되지 않는 걸까요? 바로 클래스를 찾지 못하는 거죠. 이럴때 클래스패스가 필요한 건데요. 클래스 패스는 명령프롬프트 위에서 치는 명령어 비슷한 것입니다. 


c:\java> set classpath=.;C:\java\subdir;


이렇게 치시면 됩니다. 이렇게 하면 현재 폴더와 하위 폴더인 subdir를 동시에 classpath로 지정한 것인데요. 원래는 이렇게 잘 안하고 아래의 명령처럼 합니다.


c:\javaset classpath=.; .\subdir;


이렇게 보통 많이들 합니다. 이것도 위의 예시처럼 현재 폴더와 하위 subdir 폴더를 동시에 지정한 것인데요. 위의 폴더 이름을 굳이 알기 귀찮아서 이렇게 하는 거에요. 그 이유는 밑에서 설명해 드리겠습니다.


클래스패스가 필요한 이유


그렇다면 이렇게 귀찮은 클래스패스가 왜 필요한 것일까요? 그냥 환경변수에 하나 더 추가하면 될꺼 같은데. 그리고 위의 폴더를 어떻게 모를수가 있는지 그것도 궁금하시죠? 바로 그 이름을 알지 않아도 되는 이유는 이 클래스패스가 필요한 이유와 연관되어 있습니다. 

클래스패스는 여러 컴퓨터에 본인이 만든 자바 프로그램을 설치하려고 하는데 그 컴퓨터 하나하나를 일일이 설정에 들어가서 제어판을 키고 환경변수를 일일이 추가하기는 쉬운일이 아니죠. 그래서 배치파일을 써서 한번에 설치를 완료하는데, 이 배치파일에 클래스패스가 이용됩니다. 

배치파일이라고 와 배치파일이라고? 복잡하게 생겼겠다하면서 겁부터 먹지 마시라고 하기 위해서, 오늘 위의 예제를 이용해서 간략하게 구조를 보여드리겠습니다. 


1. 자바 파일을 컴파일

2. 하위 폴더 생성 후 두 클래스 이동

3. 하위폴더를 클래스패스에 추가

4. 실행


생각보다 굉장히 간단하죠? 저걸 명령 프롬프트 명령어로 옮기면 이렇게 생겼습니다.


c:\java> javac ClassPath.java

c:\java> md subdir

c:\java> move Class.class .\subdir\Class.class

c:\java> move Path.class .\subdir\Path.class

c:\java> set classpath=.; .\subdir

c:\java> java ClassPath



댓글공감구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.

728x90
반응형

댓글