Ubuntu JAVA Compile 및 실행하기
Ubuntu 환경에서 Java 파일에 대해 Compile 및 실행하는 방법입니다.
Java Compile
아래 내용과 같이 Hello.java 파일을 작성하여 compile 후 실행해보겠습니다.
package process;
/**
* Hello Class
* @version beta
* @author freestrokes
*/
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
-d 옵션은 디렉터리 경로 지정 옵션이며 '.' 은 현재 디렉터리를 의미합니다. 다음으로 컴파일 된 class 파일을 실행해보겠습니다.
$ java -cp . process.Hello
Hello.java의 패키지명에 따라 컴파일 된 디렉터리가 생성된 것을 확인할 수 있고 실행하면 작성한 내용대로 결과가 출력되는 것을 확인할 수 있습니다.
-cp 옵션은 -classpath 옵션과 같으며 실행할 class 파일의 경로를 지정하기 위해 사용합니다. 또한 아래 서술할 내용처럼 외부 jar 파일 경로도 함께 지정하여 사용할 수 있습니다.
Command Line에서 classpath에 외부 jar 파일을 추가하여 Compile
java 파일에 외부 jar 파일의 class를 import 했을 경우 -classpath 옵션 없이 컴파일하면 다음과 같은 결과를 얻게됩니다.
이러한 경우 다음과 같이 -classpath 옵션을 사용하여 컴파일 하면 정상적으로 동작합니다. (각각의 jar 파일은 콜론(:)으로 구분합니다)
$ javac -classpath ".:/somewhere/A.jar:/elsewhere/B.jar" -d . ClassName.java
-classpath 옵션과 함께 외부 jar 파일을 추가하여 정상적으로 컴파일이 된 것을 확인할 수 있습니다.
환경변수에 classpath를 설정하여 Compile
마지막으로 환경변수에 CLASSPATH를 설정하여 컴파일하는 방법입니다. 이 방법을 사용하면 -classpath 옵션 없이 외부 jar 파일을 사용하여 컴파일이 가능해집니다.
먼저 /etc/environment 파일을 수정해줍니다.
$ sudo vi /etc/environment
JAVA_HOME 환경변수 설정과 함께 CLASSPATH 설정을 추가해줍니다.
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib
/jvm/jdk1.7.0_80/bin:/usr/lib/jvm/jdk1.7.0_80/jre/bin"
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80
JRE_HOME=/usr/lib/jvm/jdk1.7.0_80/jre
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/json-simple-1.1.1.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.39-bin.jar:$JAVA_HOME/lib/tika-app-1.15.jar
※ classpath는 컴파일된 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이라고 할 수 있습니다.
java의 runtime은 이 classpath에 지정된 경로를 모두 검색해서 특정 클래스에 대한 코드가 포함된 .class 파일을 찾습니다.
수정된 파일을 적용시켜줍니다.
$ source /etc/environment
-classpath 옵션을 제외하고 컴파일해도 정상적으로 동작하는 것을 확인할 수 있습니다.
이상으로 Ubuntu에서 Java Compile 및 실행하는 방법에 대해 알아보았습니다.
※ 참고 문헌
tistory, 리눅스 자바 컴파일, http://lng1982.tistory.com/153
- tistory, 리눅스 자바 classpath, http://linux.systemv.pe.kr/java-설치/
- egloos, 자바 classpath, http://egloos.zum.com/lifeot/v/1309439