IT/java
모듈화 이용하기 ( JDK21 )
가능성1g
2025. 6. 19. 11:04
반응형
JDK9 부터 도입된 모듈화 이지만,
잘 사용하지 않기도 해서 익숙하지가 않습니다. 그래도 이젠 익숙해져야 하기에!! 나름 정리를 해봅니다.
* 단순 모듈화 프로젝트 구조
소스(src) 폴더 하위에 모듈단위로 폴더를 만들고, 모듈의 최상휘에 module-info.java 를 만든다.
module-info.java 의 사용법
module 모듈 이름 {
requires 필요한 모듈
exports 공개할 패키지
}
프로젝트 소스 구조
your_project_root/
├── src/
│ ├── mod_main/
│ │ ├── module-info.java
│ │ └── kr/soen/main/
│ │ └── Main.java
│ └── mod_util/
│ ├── module-info.java
│ └── kr/soen/util/
│ └── Util.java
└── (bin/ 디렉토리는 아직 생성 전)
// src\mod_util\module-info.java
module mod_util { // 모듈 이름은 정확히 'mod_util'이어야 합니다.
exports kr.soen.util; // 'Util' 클래스가 있는 패키지를 외부에 공개합니다.
}
// src\mod_main\module-info.java
module mod_main { // 모듈 이름은 정확히 'mod_main'이어야 합니다.
requires mod_util; // 'mod_util' 모듈에 의존합니다.
// Main.java가 특정 패키지에 있다면 해당 패키지를 열거나 내보낼 필요는 없습니다.
}
// src\mod_main\kr\soen\main\Main.java
package kr.soen.main;
import kr.soen.util.Util; // Util 클래스를 import 합니다.
public class Main {
public static void main(String[] args) {
System.out.println("Hello from mod_main!"); // 오타 수정 확인!
System.out.println(Util.add(1, 2)); // mod_util의 Util.add() 사용
}
}
// src\mod_util\kr\soen\util\Util.java
package kr.soen.util;
public class Util {
public static int add(int a, int b) {
return a+b;
}
}
컴파일 및 실행 ( 컴파일시 폴더 자동 생성 )
## 컴파일
javac --module-source-path src -d bin\mod_util src\mod_util\module-info.java src\mod_util\kr\soen\util\Util.java
javac --module-source-path src --module-path bin -d bin src\mod_main\module-info.java src\mod_main\kr\soen\main\Main.java
## 실행
java --module-path bin --module mod_main/kr.soen.main.Main
컴파일시, 컴파일 트리 구조
your_project_root/
└── bin/
├── mod_main/
│ ├── kr/
│ │ └── soen/
│ │ └── main/
│ │ └── Main.class
│ └── module-info.class
└── mod_util/
├── kr/
│ └── soen/
│ └── util/
│ └── Util.class
└── module-info.class
eclipse 도 vscode 도 모듈에 대해서는 정상으로 잘되지 않아서 빨간색 밑줄이 자꾸 그어집니다...
그래도 실행 완성!
반응형