Develop

12일차_MySQL, DBeaver 설치, DB 이론, Java 프로젝트에서 .env 파일 적용하기(feat. 나름 딥다이브) 본문

백엔드/KDT_Programmers

12일차_MySQL, DBeaver 설치, DB 이론, Java 프로젝트에서 .env 파일 적용하기(feat. 나름 딥다이브)

230801 2025. 3. 20. 02:57

안녕하세용 ~

12일차 (3주 3일차) 입니다.

 

오늘 수업은 Java 프로젝트에 API를 이용해 Gemini LLM을 붙이는 작업(강사님 코드 클론)을 마무리했고,

데이터베이스 실습을 위해 MySQL과 DBeaver를 설치하는 시간을 가졌습니다. (전 둘다 설치되어 있어서 그동안 오류 읽는법 연습했습니당)

 

수업 종료 후 오늘 본 코드가 실행이 잘되는지 보다가 오류가 여기저기 생겨서 딥다이브(제기준 나름ㅋㅋ)하는 시간을 가졌습니다.

 

1. 외부 모듈을 가져올 때 오류 처리

2. Java 프로젝트에서 .env 파일 적용하기

 

 


 

오늘의 딥다이브-1

외부 모듈을 가져올 때 오류 처리

 

개요

  • Java A 프로젝트에 LLM프로젝트를 모듈로 붙임
  • 실습으로 B 프로젝트에 LLM 프로젝트를 모듈로 붙이는 연습 진행

 

 

 

문제 발생

  • B프로젝트에 LLM 프로젝트를 모듈로 import 한 후 여러 클래스에서 import문 오류 발생

 

 

시도 했던 방법 들 

 

1. 모듈 불러오기, jar 적용하기

Project structure (command + ;)  ->  Modules  -> 

     방법1 ) LLM 프로젝트 import   -> Module Dependency -> 사용했던 외부 라이브러리, jar file 가져오기

     방법2 ) B 프로젝트 ->  Module Dependency ->  LLM 프로젝트 가져오기

 

 

2. 오류나는 import문 삭제 -> 재 import

 

 

 

해결방법

마지막 방법으로 해결했습니다 !

 

3. 그래도 해결안되는 오류들 (Format Interface 수정)

  • A프로젝트의 record가 구현하던 Format Interface를 타고가보니 아무것도 정의되어 있지 않음
  • Generation Format을 명시적으로 지정해줌
  • 연관된 클래스들을 PropertyType 맵핑 및 데이터 형식 지정을 해줘서 Format Interface 로 추상화함

 


 

오늘의 딥다이브-2

Java 프로젝트에서 .env 파일 적용하기

 

개요

  • 상기 B 프로젝트를 github에 push 하려고보니.. API KEY 노출 우려로 .env 파일로 숨기기 도전
  • .env 파일 생성 완료, git ignore 지정 완료, 런 실패

 

 

문제발생

  • B 프로젝트는 빌드도구가 없는 쌩 Java 프로젝트여서 .env 파일 지원이 안됨
  • API KEY가 null 이거나 없으면 예외를 던지는 코드를 작성함 -> 실행 시 예외 발생 -> .env 파일을 읽지못하는것으로 판단
//error msg
Exception in thread "main" java.lang.IllegalStateException: API KEY가 설정되지 않았습니다. 
.env 파일을 확인해주세요.
	at com.org.lang.Run.main(Run.java:19)

 

 

 

시도 했던 방법 들

  • 터미널에서 echo 명령어로 API KEY 환경변수 등록 및 확인 -> 키 값 잘 뜸
  • javac 컴파일 -> 위치에서 LLM 프로젝트를 못찾아서 LLM 프로젝트를 B프로젝트/src 하위로 refactor 하고 컴파일 됨
  • API KEY를 export 명령어로 환경변수 설정 -> 안 됨

 

 

해결 방법

  • 해결 1 - 도움받음 (개발 커뮤니티에 `자바에서 .env 가 안돼요` 했더니 지원군 6명 등장 ㄷㄷ 한시간동안 친절히 봐주셨습니다.)
    • IntelliJ -> Run with Parameters -> Envirionment variables 에 .env에 입력했던 환경변수(API KEY) 직접 입력
      => 실행 잘 됨, 그러나 Current File 로 실행하면 안됨 (다른방법으로도 해결해보고 싶어짐)
       

 

 

  • 기타 방법 들
    개발자분들이 도움주실 때, 이런방법도 있다 하고 몇개 알려주셨습니다.
    • 해결1 방법의 환경변수 직접 설정하기 -> 해봄
    • dotenv 라이브러리 사용 -> 2번째로 해봐야지 하고 생각
    • IDE 빌드도구(gradle, maven)로 의존성 주입하기 -> 쌩 자바 프로젝트여서 비해당
    • bash로 시스템 환경변수 설정하기 -> 1번째로 해보려고 검색, 실행, 적용안됨 이슈..

 

 

  • 해결 2 - 스스로 해결
    • 2번째 방법으로, 라이브러리를 설치해보기로 함 -> 플러그인이 있던거같은데? 하고 IntelliJ 확인
      '오 .env 지원된다~' 하고 바로 EnvFile 플러그인을 설치

 

 

 

 

 

  • IntelliJ -> Current File -> Edit Configurations..

 

 

 

 

 

-> Enable EnvFile 체크(플러그인 활성화) 
-> 아래 표에서 `+` 누르고 Add .env file 

* Run2 설정 시에는 실행되었던 '해결-1' 방법을 해제한 뒤 진행했습니다.

 

 

 

 

-> finder 파일 창에서 숨겨진 `.env` 파일 찾기( 빈 곳 클릭 -> command + shift + . ) 
-> `.env` 열기 -> Apply -> OK

 

 

 

결과

LLM이 답변을 잘 반환해줍니다 굳~

 

 

 

도와주신 분들 감사합니다. 

 

 

직접적인 해결 -> Yana

문제에 근본적인 접근 -> Neo

그 외 피가되고 살이되는 조언 -> Zino

Doc 지원 -> ChanWoong