생활코딩/JAVA1

생활코딩) JAVA1 - 12.4. 직접 컴파일하고 실행하기 : 라이브러리 이용

無無 2021. 5. 9. 18:14

youtu.be/uj2mOvjhj4o

자 이번 시간에는 조금 더 복잡한 얘기를 해볼 겁니다 우리가 컴파일을 할때 순수하게 내가 만드는 프로그램만 실행할 때는 우리가 지금까지 한 것처럼 하면 되는데요. 내가 만든 프로그램이 다른 사람이 만든 것을 이용하고 있다면 조금 더 복잡해집니다.

 

자 OkJavaGoInHome java 파일 한번 화면에 열어 볼게요. 여기 있는 코드를 한번 보시면 뉴 엘리베이터 이런 뉴같은거 뭔지 모르시겠죠 괜찮아요. 자 어쨌든간에 new 엘리베이터에서 엘리베이터는 이 코드 안에 없어요. 어디 있냐면 여기 임포트 보이시죠 임포트는 불러온단 뜻이에요. 즉 org 밑에 opentutorials.iot 밑에 엘리베이터 라는 것을 불러온 상태에요. 그럼 여러분이 코드 안에서 엘리베이터 라고 치면 얜 거에요 그럼 내가 누구냐

 


바로 우리의 OkJavaGoInHome.java와 같은 디렉토리에 있는 org 폴더에 오픈 tools 폴더에 iot 라고 하는 것 밑에 있습니다. 

자 그래서 요 만큼을 org 부터 iot 만큼을 패키지 라고 부릅니다. 작은 프로그램들이 모여 있는 패키지. 그런 느낌 나중에 배우게 돼요. 
자 그럼 거기에 보시면 elevator.java 라고 되어있는데 이것을 컴파일하면 클래스 파일이 생겨요. 바로 저 클래스 를 로딩하는 코드가 이만큼 에 해당되는 임포트 입니다.  그리고 것이 임포트 되었기 때문에 엘리베이터 라고 하는 좋고 들을 통해서 우리는 엘리베이터 점 클래스 파일을 이용할 수 있게 되는 겁니다.


매 클래스 파일이 생성이 됐습니다 실행 파일이 생성이 된 거죠. 그리고 이 소스 코드는 내부적으로 이 패키지 안에 있는 여러 파일들을 다 필요로 하기 때문에 그 자바 컴파일러가 요 패키지 안에 있는 이 파일들도 컴파일을 시켜 준 겁니다. 그래야 사용할 수 있으니까요. 

 

우리 상황을 조금 바꿔 볼게요. 저희 클래스 파일 다시 지울게요. 어떻게 할꺼냐 면 저는lib이라고 하는 폴더를 만들었습니다 폴더 이름은 아무거나 해도 상관없어요.

 


그리고 org 라는 저 패키지 디렉토리를 lib 라고 하는거 안으로 옮겨 버렸어요. OkJavaGoInHome.java와 같은 디렉토리에 org 지가 더 이상 있지 않습니다. lib 밑에 있어요 제가 일부러 꼬은 거예요 상황을. 자 그리고 제가 javac 를 하면 어떻게 되는지 볼까요. 자 엔터 쳤을 때 이렇게 주루루 뭐라고 우리한테 무서운 얘기들이 나오죠. 잘보시면 패키지 oie 에서 iot 가 존재하지 않는다 라고 나옵니다. 왜요 우리가 컴파일 하고 있는 이 파일과 같은 디렉토리에 있지 않거든요. 얘가 lib 밑에 있거든요 자 이런 때 사용하는 게 뭐냐. 


자바 c 를 해보시면 여기에 쭉 보면 -class-path 라는게 있습니다 클래스 패스. 이것을 줄이면 - cp인 거에요.우리가 지금 컴파일 하려고 하는 클래스들이 어디에 있는가를 얘기해 주는 거에요. 즉 우리는 OkJavaGoInHome 이놈을 사용하기 위해서는 lib 밑에 있는 org 밑에 있는 패키지 의 위치를 알려 줘야 되는 겁니다. 자 그럼 이렇게 합니다. 자바 컴파일러가 내가 지금 컴파일 하려고 하는 이 프로그램은 여기 여기에 있는 클래스들이 필요하니까 여기서 찾아 주세요 라고 할 때 사용하는 게 javac --class-path 씁니다.

 


또는 줄여서 -cp 자 그리고 어 이렇게 따옴표를 치고요. 일단 현재 디렉토리에서 도 필요하면 찾아야 되니까 점이라고 치고요.  그리고 윈도우에서는 세미콜론 으로 구분하고요. 맥에서는 그냥 콜론 을 하시면 됩니다 리눅스 같은 운영체제도 마찬가지로 콜론. 자 그리고 lib 밑에 있으니까 거기서 찾아 보세요 라는 뜻이에요. 


그리고 만약에 더 다른데 있으면 이렇게 경로를 여러분이 쭉 붙여주시면 자바 컴파일러가 알아서 여기저기 찾아 보게 된다는 말이죠 자 그리고 OkJavaGoInHome.java 그리고 엔터를 치면 자 여기 클래스 파일 아까 엘리베이터 그것만 딱 지울게요. 자 엔터치면 보시는 것처럼 컴파일이 되고 여기서 필요로 하는 클래스 파일들을 자동으로 컴파일해서 만들어주게 되는 겁니다 자 그럼 우리 실행도 한 번  시켜 볼까요. 음 실행할 때도 마찬가지로 java라고 하고  그리고 OkJavaGoInHome.class 파일 빼구요. 

 

java OkJavaGoInHome -> Enter

 


엔터치면 실행이 되는데 여기에 에러가 뜨죠 Exception이라는 것은 자바에서 에러 라고 생각하시면 됩니다. 즉 여기 보니까 엘리베이터를 클래스를 not found Exception이 떴습니다. 못 찾았던 얘기에요 그럼 이한테 만약에 애가 org 가 바깥쪽에 있었다 그럼 잘 찾아 쓸 거에요. 근데 바깥쪽에 있지 않았잖아요. 이렇게 lib 밑에 있잖아요 그러면 이제 우리가 명시적으로 lib 밑에 있어 라고 알려 줘야 돼요. 

cp 클립 이렇게 그렇게 되면 이제 되는데 문제는 이렇게 하게되면 은 원래 기본적으로 자바는 우리가 실행 시 자바를 실행시키는 디렉토리에 있는 OkJavaGoInHome.class 파일을 찾도록 약속되어 있는데 여러분이 명시적으로 lib 이라고 저렇게 해놓으면 립 에서만 찾게 돼요. 같은 디렉토리에서 찾질 않는단 말이에요 이렇게 되면은 여러분이 현재 디렉토리 라는 의미에서 점도 찍어 주셔야 됩니다. 여기 제가 콜론 을 썼는데 윈도우는 세미콜론 을 하시는 거에요. 운영체제 마다 조금씩 달라요 자 이렇게 하게 되면 현재 디렉토리에서
OkJavaGoInHome.class 파일을 열어서 거기 있는 메인 파일 안에 있는건 실행 시키다가 그 안에 엘리베이터 코드가 있으면 그것을 lib 밑에서 org 밑에 있는 여기 있는 요 클래스 파일을 읽어서 실행 시키게 되는 것입니다.


나 혼자 만든 것이 아니라 다른 사람이 또는 다른 시간이 있는 내가 만든 프로그램을 부품으로 해서 얘를 로딩 해서 또 임포트 에서 우리의 우리가 만드는 프로그램을 컴파일하고 실행하는 방법을 살펴봤습니 다. 이렇게 다른 사람이 만들 사용할 수 있도록 잘 정리정돈 된 프로그램들을 도서관 이란 뜻에서 라이브러리 라고 부릅니다 

여러분 이제 계속 코딩을 해 나가실 건데 어 혼자서 개발 다 하지 않습니다. 다른 사람이 만든 라이브러리들을 이용해서 나의 소프트웨어를 만들어 가는 것이기 때문에 이 세상에는 어떤 라이브러리들이 있는가를 살펴보는 것. 그것은 우리 인생에서 견문을 넓히는 것 만큼이나 중요하고 같은 일입니다. 

 

 


------

* 유튜브 강의에서 자막을 추출해 정리했습니다.

------

 

* 라이브러리란 다른 사람이 만들 사용할 수 있도록 잘 정리정돈 된 프로그램들

 

반응형