프로그램을 구성하는 소스파일이 다수개로 구성되어 있고, 각각의 소스파일의 경로가 다를 때 현재의 클래스를 컴파일하는 경우에는 다른 소스파일의 경로를 -sourcepath 옵션에 지정해 주면된다.
예를 들어, 다음과 같은 환경이라면....
명령 프롬프트 상의 경로 --> D:\JavaTest\
컴파일하려는 메인 클래스의 경로 --> D:\JavaTest\Main.java
참조되는 클래스의 소스파일 경로 --> D:\JavaTest\src1\, D:\JavaTest\src2\
컴파일후에 클래스파일이 저장될 경로 --> D:\JavaTest\classes\
메인 클래스 컴파일 명령
D:\JavaTest>javac -d ./classes -sourcepath ./src1;./src2 Main.java<enter>
위의 명령은 서로 다른 경로에 저장된 소스를 컴파일러가 참조하여 컴파일하여
classes 디렉토리에 모든 class파일들을 저장하라는 의미이다.
위의 명령결과 classes 디렉토리에는 Main.class, Hello.class, World.class파일이 생성된다.
현재경로와 다른 경로에 있는 클래스 실행
위의 경우처럼,
실행하려는 클래스의 경로와 현재 명령프롬프트 상의 현재 경로가 다를 경우에는
다음과 같이 -classpath 옵션을 이용하면 된다.
명령프롬프트상의 경로: D:\JavaTest\
실행하려는 클래스파일의 경로: D:\JavaTest\classes\
프롬프트 상에서 다음과 같은 명령으로 메인 클래스를 실행한다.
D:/JavaTest>java -classpath ./classes Main.java<enter>
D:/JavaTest>java -classpath .\classes Main.java<enter>
D:/JavaTest>java -classpath D:/JavaTest/classes Main.java<enter>
D:/JavaTest>java -classpath D:\JavaTest\classes Main.java<enter>
컴파일하려는 메인 클래스의 내용(D:\JavaTest\Main.java)
public static void main(String[] args)
{
Hello h = new Hello();
World w = new World();
h.printMsg();
w.printMsg();
}
}
메인 클래스에서 사용되는 다른 클래스(D:\JavaTest\src1\Hello.java)
{
public void printMsg(){
System.out.println("Hello");
}
}
메인 클래스에서 사용되는 다른 클래스(D:\JavaTest\src2\World.java)
{
public void printMsg(){
System.out.println("World");
}
}