폴더는 java-src/extension/21_build_offline 입니다. Main.java 는 빌드 도구 없이도, mvn package 로 만든 jar 로도 실행됩니다.
cd java-src\extension\21_build_offline
C:\project\jdk-21.0.8\bin\javac -encoding UTF-8 Main.java
C:\project\jdk-21.0.8\bin\java -Dstdout.encoding=UTF-8 Main # 약 1초Main.java — 실행 환경과 클래스패스 확인// 클래스패스 항목을 순회해 지금 어떤 jar 가 잡혀 있는지 보여준다
String cp = System.getProperty("java.class.path", "");
String[] entries = cp.split(java.io.File.pathSeparator);
for (String e : entries) {
System.out.println(" - " + e);
}=== 실행 환경 정보 ===
클래스: Main
패키지: null
java.version: 21.0.8
file.encoding: UTF-8
=== 클래스패스 항목 ===
- .javac 로 직접 컴파일하면 클래스패스가 현재 폴더(.) 하나뿐입니다. mvn package 로 만든 fat jar 로 실행하면 이 목록이 BOOT-INF/lib 안의 jar 수만큼 늘어납니다.
import-jars.sh — 반입 jar 검증export PATH="/usr/bin:/mingw64/bin:$PATH" # Git Bash 명령 앞 필수
bash import-jars.sh ../../lib.sha256 사이드카가 있으면 sha256sum 으로 대조하고, 없으면 "미검증"만 표시합니다. 대조 결과가 다르면 종료 코드 1 로 끝나 CI 파이프라인에서 실패로 감지할 수 있습니다.
JAR 크기(byte) 상위그룹 검증
mybatis-3.5.19.jar 1819063 mybatis 미검증
poi-5.3.0.jar 2979181 poi 미검증java-src/lib 에는 아직 .sha256 파일을 두지 않아 전부 미검증으로 나옵니다. 실제 반입 심사에서는 인터넷 PC에서 받은 직후 sha256sum *.jar > 목록.sha256 형태로 사이드카를 만들어 함께 옮깁니다.