이클립스는 자바로 프로그램을 만들때 유용한 도구이다.
하지만 이클립스 없이 자바로 프로그램을 만드려면 어떻게 해야할까?
이클립스 없이 자바로 프로그래밍을 하려면 우선 자바 파일을 스스로 컴파일 할 수 있어야 한다.
그리고 컴파일한 클래스 파일을 앞으로의 실행하는 과정을 거쳐야 한다.
직접 컴파일을 하기 위해서는 자바의 설치 경로를 알고 있어야 한다.
cd(Change Directory) 명령어로 자바의 설치 경로로 이동한다.
필자의 경우 자바 설치경로에 공백이 존재(Internet Plug-Ins)하여 ""로 이스케이프 처리를 해주었다.
pwd 명령어로 이동이 되었는지 확인 가능하다.
그중 bin 폴더로 이동한다.
ls 명령어로 파일 목록을 확인하면 java와 javac가 있는 것을 확인할 수 있다고 하는데, 필자는 java만 보였다.
뭔가 이상하다......
뭔가 잘못된것 같아 확인해보니, /usr/libexec/java_home
을 터미널에 입력했을때 나오는 자바 설치경로가 이상한 것 같았다. 구글링을 하자..!
cd /Library/Java/JavaVirtualMachines/
명령어를 이용하여 JavaVirtualMachines 디렉토리로 이동한다.
cd
명령어는 Change Directory
의 약자로 디렉토리를 변경해주는 명령어이다.
pwd
로 정상적으로 맞게 디렉토리가 변경 되었는지 확인한다.
ls
명령어로 현재 디렉토리에 있는 파일을 확인하면 설치한 JDK 파일이 위치한 것을 볼 수 있다.
ls
명령어는 List Segement
의 약자로 현재 자신이 위치한 디렉토리에 있는 전체 파일 목록을 출력해주는 명령어이다.
JDK의 위치를 찾고 ls로 파일을 확인하며 강의와 비교해보니, cd /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
을 입력해야 강의처럼 javac가 나왔다.
cd로 디렉토리를 변경한후 ls 로 확인하고, cd bin
을 입력해 bin 디렉토리로 이동하여 다시 ls로 파일을 확인하면 드디어! javac
를 발견할 수 있다!
터미널에서 javac만 입력해도 실행결과가 나오는 것은 javac의 경로를 운영체제가 이미 알고 있기 때문이다.
이는 환경 변수에 javac의 경로가 이미 입력되어 있기 때문이다.
echo $PATH
를 입력하면 환경 변수의 Path 정보를 확인할 수 있다.만약 javac의 경로가 포함되어 있지 않다면 터미널에서 명령어를 입력해 환경 변수에 추가할 수 있다.
nano ~/.bash_profile
명령어를 입력한다.~
은 자신의 홈디렉토리를 나타낸다.편집기가 열리면 export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin
를 입력하면 된다.
하지만 기본적으로 설정 되어있기 때문에 입력할 필요는 없다. 위의 설명은 그냥 이론적인 것!
javac 명령어를 사용하기 위해서는 javac의 경로가 환경 변수에 포함되어 있어야 한다.
이번에는 터미널에서 javac 명령어로 자바 파일을 직접 컴파일해 보자.
cd /Users/jisubin/Desktop/java1/Programming
를 통해 복사한 프로젝트 디렉토리로 이동한다.ls
명령어로 프로젝트 디렉토리 내부의 구조를 확인할 수 있다.javac Program.java
를 입력해 Program.java
를 컴파일한다.javac
명령어는 클래스 파일을 만드는 명령어이다.ls
명령어로 내부를 확인해보면 Program.class
가 생성된 것을 확인할 수 있다.(기존에 있던 클래스 파일을 지우고 실행해보면 확인가능함)java Program
을 입력하면 컴파일된 클래스 파일이 실행된다.java
명령어는 컴파일된 파일을 가상 머신에서 실행하는 작업을 한다.cat Program.java
명령어로 자바파일의 내용을 확인할 수 있다.외부 라이브러리 객체들을 사용하는 프로그램을 직접 컴파일 해보자.
OkJavaGoInHome.java
파일은 import 구문
을 통해 org.opentutorials.iot
의 클래스들을 불러들이고 있다.
그렇기 때문에 OkJavaGoInHome.java
파일의 컴파일을 실행할 때 자동적으로 org.opentutorials.iot
의 Elevator, Lighting, Security 클래스들도 컴파일을 한다.
OkJavaGoInHome.java
파일을 컴파일 하였다.OkJavaGoInHome.java
파일과 같은 디렉토리에 있지 않기 때문에 에러가 발생함을 알 수 있다.외부 라이브러리를 포함해 컴파일 하기 위해서는 javac
명령어의 옵션 중 --class-path(-cp)
옵션을 이용하여 외부 라이브러리도 함께 지정해야 한다.
javac -cp ".:lib" OkJavaGoInHome.java
명령어를 입력하여 컴파일한다.
콜론(:)
은 구분자 의 의미를 갖는다.
--class-path
옵션은 -cp
로 줄여서 표현할 수 있다.
-cp ".:lib"
은 자바 파일이 있는 현재 폴더(.)와 lib 폴더에서 필요한 자바 파일들을 컴파일하라는 의미이다.
--class-path(-cp)
옵션에 외부 라이브러리를 옵션에 포함하여 실행해야 한다.java -cp ".:lib" OkJavaGoInHome
으로 실행한다.지난 시간과 달리 org 폴더를 다시 lib 밖으로 꺼낸다.
args 파라미터
를 통해 값을 받고 있기 때문이다. 이클립스에서 Run Configuration 의 Argument 탭에서 아규먼트를 입력해 실행했었지만, 터미널에서 아규먼트는 어떻게 주어야 할까?
java OkJavaGoInHomeInput "JAVA APT 507" 15.0
""(큰따옴표)
안에 넣어주어야 한다.부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126