[{"data":1,"prerenderedAt":292},["ShallowReactive",2],{"post-document:\u002Fjava\u002Fdebugging\u002F2026\u002F08\u002F11\u002Fjava-vscode-auto-compile-debugging\u002F":3},{"id":4,"title":5,"body":6,"categories":268,"date":270,"description":271,"extension":272,"image":273,"key_concepts":273,"last_modified_at":273,"legacyPath":274,"meta":275,"navigation":75,"part":277,"path":278,"published":75,"robots":273,"seo":279,"series":280,"stem":281,"strengths":273,"summary":273,"tags":282,"tradeoffs":273,"__hash__":291},"posts\u002Fposts\u002FBackend\u002FJAVA\u002Fdebugging\u002F2026-08-11-java-vscode-auto-compile-debugging.md","Java 디버깅 Part 2: VS Code 자동 컴파일과 프로젝트 구조",{"type":7,"value":8,"toc":261},"minimark",[9,13,17,29,34,41,95,102,110,113,146,149,153,156,162,175,178,184,187,193,196,200,203,209,212,218,225,257],[10,11,5],"h2",{"id":12},"java-디버깅-part-2-vs-code-자동-컴파일과-프로젝트-구조",[14,15,16],"p",{},"VS Code에서는 왜 자동 컴파일이 바로 안 보이는 걸까? 내가 굳이 그 디렉토리로 이동해서 컴파일해야 하는 걸까? 코드가 바뀌면 알아서 다시 컴파일해 주는 도구는 없는 걸까?",[14,18,19,20,24,25,28],{},"일단 ",[21,22,23],"code",{},"자동 컴파일","과 내가 보고 있는 폴더에 ",[21,26,27],{},".class"," 파일이 생기는 것은 같은 얘기가 아니다.",[30,31,33],"h3",{"id":32},"vs-code에서는-어떻게-실행되는가","VS Code에서는 어떻게 실행되는가",[14,35,36,37,40],{},"예를 들어 ",[21,38,39],{},"Calculator.java","가 아래처럼 있다고 하자.",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-java shiki shiki-themes github-light github-dark","public class Calculator {\n    public static void main(String[] args) {\n        int result = 10 + 20;\n\n        System.out.println(result);\n    }\n}\n","java","",[21,49,50,58,64,70,77,83,89],{"__ignoreMap":47},[51,52,55],"span",{"class":53,"line":54},"line",1,[51,56,57],{},"public class Calculator {\n",[51,59,61],{"class":53,"line":60},2,[51,62,63],{},"    public static void main(String[] args) {\n",[51,65,67],{"class":53,"line":66},3,[51,68,69],{},"        int result = 10 + 20;\n",[51,71,73],{"class":53,"line":72},4,[51,74,76],{"emptyLinePlaceholder":75},true,"\n",[51,78,80],{"class":53,"line":79},5,[51,81,82],{},"        System.out.println(result);\n",[51,84,86],{"class":53,"line":85},6,[51,87,88],{},"    }\n",[51,90,92],{"class":53,"line":91},7,[51,93,94],{},"}\n",[14,96,97,98,101],{},"VS Code에서 Java 프로젝트가 정상적으로 잡혀 있다면, 저장할 때 내부적으로 최신 클래스를 만들고 ",[21,99,100],{},"Run Java","로 실행할 수 있다.",[42,103,108],{"className":104,"code":106,"language":107,"meta":47},[105],"language-text","Calculator.java 수정\n    ↓\nCtrl+S \u002F Cmd+S\n    ↓\nJava Language Server\n    ↓\n자동 빌드\n    ↓\n내부 bin에 최신 class 생성\n    ↓\nRun Java\n    ↓\n최신 코드 실행\n","text",[21,109,106],{"__ignoreMap":47},[14,111,112],{},"그래서 매번 아래처럼 직접 컴파일할 필요는 없다.",[42,114,118],{"className":115,"code":116,"language":117,"meta":47,"style":47},"language-bash shiki shiki-themes github-light github-dark","cd 6.exception\njavac Calculator.java\njava Calculator\n","bash",[21,119,120,130,139],{"__ignoreMap":47},[51,121,122,126],{"class":53,"line":54},[51,123,125],{"class":124},"sj4cs","cd",[51,127,129],{"class":128},"sZZnC"," 6.exception\n",[51,131,132,136],{"class":53,"line":60},[51,133,135],{"class":134},"sScJk","javac",[51,137,138],{"class":128}," Calculator.java\n",[51,140,141,143],{"class":53,"line":66},[51,142,46],{"class":134},[51,144,145],{"class":128}," Calculator\n",[14,147,148],{},"다만 VS Code가 지금 열어 둔 폴더를 Java 프로젝트로 제대로 인식했을 때 이야기다.",[30,150,152],{"id":151},"프로젝트-구조가-애매한-경우","프로젝트 구조가 애매한 경우",[14,154,155],{},"아래처럼 챕터별 폴더만 있는 단순 실습 구조라면 VS Code가 이 폴더를 일반적인 Java 프로젝트로 정확히 잡지 못할 수 있다.",[42,157,160],{"className":158,"code":159,"language":107,"meta":47},[105],"java-springboot\u002F\n├── 1.basic\u002F\n├── 2.object\u002F\n├── 3.inheritance\u002F\n├── 6.exception\u002F\n│   └── Calculator.java\n└── ...\n",[21,161,159],{"__ignoreMap":47},[14,163,164,165,168,169,171,172,174],{},"이런 경우 VS Code는 폴더를 ",[21,166,167],{},"unmanaged folder"," 형태로 처리할 수 있다. 그래서 내가 원하는 위치에 ",[21,170,27],{},"가 안 보이거나, 직접 ",[21,173,135],{},"를 실행해야 하는 것처럼 느껴질 수 있다.",[14,176,177],{},"보통 Java에서는 Maven이나 Gradle 프로젝트 구조를 사용한다.",[42,179,182],{"className":180,"code":181,"language":107,"meta":47},[105],"project\u002F\n├── pom.xml\n└── src\u002F\n    └── main\u002F\n        └── java\u002F\n            └── ...\n",[21,183,181],{"__ignoreMap":47},[14,185,186],{},"이 구조면 Maven이나 Gradle이 소스 폴더, 빌드 결과 폴더, 필요한 라이브러리를 알고 있어서 훨씬 안정적으로 동작한다.",[42,188,191],{"className":189,"code":190,"language":107,"meta":47},[105],"Maven \u002F Gradle\n    ↓\n소스 탐색\n    ↓\n의존성 해결\n    ↓\n컴파일\n    ↓\n테스트\n    ↓\n패키징\n",[21,192,190],{"__ignoreMap":47},[14,194,195],{},"VS Code도 Maven과 Gradle을 Java 빌드 도구 워크플로로 지원한다.",[30,197,199],{"id":198},"코드-변경-시-자동-재실행까지","코드 변경 시 자동 재실행까지",[14,201,202],{},"자동 컴파일은 저장한 코드를 다시 빌드하는 것까지다.",[42,204,207],{"className":205,"code":206,"language":107,"meta":47},[105],"코드 저장\n    ↓\n.class 갱신\n",[21,208,206],{"__ignoreMap":47},[14,210,211],{},"실행 중인 애플리케이션까지 자동으로 다시 시작하려면 별도 도구가 필요하다.",[42,213,216],{"className":214,"code":215,"language":107,"meta":47},[105],"코드 저장\n    ↓\n컴파일\n    ↓\n실행 중인 애플리케이션 재시작\n",[21,217,215],{"__ignoreMap":47},[14,219,220,221,224],{},"Spring Boot를 쓰는 단계가 되면 ",[21,222,223],{},"spring-boot-devtools","를 추가해서 개발 중 재시작을 더 편하게 할 수 있다.",[42,226,230],{"className":227,"code":228,"language":229,"meta":47,"style":47},"language-xml shiki shiki-themes github-light github-dark","\u003Cdependency>\n    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n    \u003CartifactId>spring-boot-devtools\u003C\u002FartifactId>\n    \u003Cscope>runtime\u003C\u002Fscope>\n\u003C\u002Fdependency>\n","xml",[21,231,232,237,242,247,252],{"__ignoreMap":47},[51,233,234],{"class":53,"line":54},[51,235,236],{},"\u003Cdependency>\n",[51,238,239],{"class":53,"line":60},[51,240,241],{},"    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n",[51,243,244],{"class":53,"line":66},[51,245,246],{},"    \u003CartifactId>spring-boot-devtools\u003C\u002FartifactId>\n",[51,248,249],{"class":53,"line":72},[51,250,251],{},"    \u003Cscope>runtime\u003C\u002Fscope>\n",[51,253,254],{"class":53,"line":79},[51,255,256],{},"\u003C\u002Fdependency>\n",[258,259,260],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":47,"searchDepth":60,"depth":60,"links":262},[263],{"id":12,"depth":60,"text":5,"children":264},[265,266,267],{"id":32,"depth":66,"text":33},{"id":151,"depth":66,"text":152},{"id":198,"depth":66,"text":199},[46,269],"debugging","2026-08-11 09:00:00 +0900","VS Code의 Java 자동 빌드 동작, .class 파일 위치, Maven과 Gradle 기반 프로젝트 구조, 자동 재시작 도구를 정리한다.","md",null,"\u002Fjava\u002Fdebugging\u002F2026\u002F08\u002F11\u002Fjava-vscode-auto-compile-debugging\u002F",{"layout":276},"post","2","\u002Fposts\u002Fbackend\u002Fjava\u002Fdebugging\u002F2026-08-11-java-vscode-auto-compile-debugging",{"title":5,"description":271},"Java 디버깅","posts\u002FBackend\u002FJAVA\u002Fdebugging\u002F2026-08-11-java-vscode-auto-compile-debugging",[283,284,285,286,287,288,289,290],"Java","Debugging","VS Code","Compiler","Maven","Gradle","Spring Boot","DevTools","45M5HAtLMIUlrq90Pp7cIR1wZ92N9WNuABZadiLy-k4",1788744784743]