[VSCode] Code Runner에서 파일 명 공백과 java class 인식 오류 해결

2023. 7. 14. 01:02General

일단 Extensions - Code Runner - Settings - Executor Map by File Extension - Edit in settings.json 버튼을 눌러 settings.json 파일에 진입하자.

1. 파일 명 공백 문제

문제 원인: Powershell에서 실행할 때

$dir$fileNameWithoutExt

이 부분이 ""으로 묶여 있지 않아, 가령 파일명이 "test file"일 경우

.\test file

로 인식 되어 문제가 생긴다.

이게 두 변수가 붙어 있어서 단순히 ""을 바깥쪽에 묶어주는 것으로 해결되지 않으므로

settings.json의 "code-runner.executorMap"의 해당하는 언어의 부분을 

ex) cpp

"cpp": "cd $dir && g++ \"$fileName\" -o \"$fileNameWithoutExt\" && .\\\"$dir$fileNameWithoutExt\"",

다음과 같이 고쳐주자. 

 

2. Java 클래스 인식 문제

Java는 src 폴더 내에서 코드를 실행해야 각 패키지 별로 클래스를 가져온다. 다만 Code Runner은 파일이 위치한 디렉토리에서 파일을 실행시키므로 같은 패키지 내의 클래스들을 전혀 읽지 못한다는 문제가 발생한다.

 

따라서

1. 사용할 패키지의 모든 파일을 컴파일하고

2. 코드를 실행시키기 전 src 폴더로 이동하며,

3. 파일의 풀네임을 이용해 실행시키는

작업들이 필요하다. 이는 C++에서도 한 파일이 아니라 모듈을 만들어서 실행하고 싶을 때 수정하는 방법과 같다.

Code Runner뿐만 아니라 추후 리눅스에서 자주 다루는 makefile에서도 마찬가지 메커니즘을 사용하다.

 

그래서 수정해야 하는 작업은 다음과 같다.

"java": "cd $dir && javac *.java && cd \"$workspaceRoot\\src\" && java $fullFileName",

 

3. 더 알아보기

$file과 같은 predefined Variable에 대해 더 알아보고 싶다면 

https://github.com/formulahendry/vscode-code-runner#configuration

 

GitHub - formulahendry/vscode-code-runner: Code Runner for Visual Studio Code

Code Runner for Visual Studio Code. Contribute to formulahendry/vscode-code-runner development by creating an account on GitHub.

github.com

를 참고하자.

728x90