인텔리제이 환경에서 하나의 프로젝트 아래 여러개의 main을 만들고 자유롭게 코딩하고 실행하고 싶었다.
그러나 각각 main을 만들어서 실패를 하였지만,
현재 실행하고자 하는 main메서드가 아닌 다른 클래스에서 오류가 발생할 경우,
인텔리제이가 그 에러를 잡아주면서 현재 실행하고자 하는 main메서드에서도 영향을 끼쳤다.
이를 해결 하는 방식에는 3가지 방식이 있다.
0. 모듈을 여러개 만들어서 관리하는법
- .class 파일에서 가장 마지막(근처)에 있는 모듈아래에 있는 코드들이 전부 정상적으로 실행이 되면 main끼리 아무런 문제가 없이 작동함으로
- 최상위 아래에 source 폴더를 만들어서 그 아래에 현재 작성하고 있는 알고리즘 코드를 구현 한 후에
- source폴더와 같은 위치든 다른 위치에 sub-module을 만들어서 sub-module 아래에 다 풀거나 풀다가 포기한 알고리즘 코드들을 모아 둔다.
이렇게 하면 에러가 발생해도 내가 구현하고 있는(최상위 아래의 source폴더)에서 작동하는 main에 대해서 이상이 생기지 않음
- 이렇게 하면 현재 코딩하고 있는 main 메서드에는 아무런 영향을 미치지 않으면서 에러와 상관잆어 다른 코드들을 보관 할 수 있다.
아래의 두 예시처럼 폴더를 구성하면 해결 됨을 알 수 있다.
예시 1
예시 2
주의
- modoule이 아닌 source 폴더나 패키지를 만들면 의미가 없으니 주의해야한다.
아래처럼 해결되지 않을 수 있다.
1. 하위 폴더를 생성 후 하위 폴더를 exclue하는 방식
- 이 방식은 source폴더나 source폴더의 하위 패키지를 exclude해줘서 컴파일을 제외시켜주는 방식입니다.
- source 폴더의 하위에 있는 폴더만 class를 컴파일 시켜주는 인텔리제이의 방식을 이용하는 것 같습니다.
- 이 방식은 컴파일 에러가 날 수 있을거 같은 .class파일이 있는 모든 source폴더를 exclude해줘야 합니다.
- 컴파일 시키고 싶지 않은 source폴더나 패키지를 마우스 오른쪽 클릭 후,
- mark directory as에서 excluded 클릭
아래를 보면 exclude를 통해서 해결됨을 확인 할 수 있다.
예시 1
위에서 아래로 변경
주의
- 반드시 source folder를 exclude해줘야한다.
아래처럼 해결되지 않을 수 있다.
3. 자신의 class가 아닌 컴파일 에러를 마주쳐도 빌드가 통과하게 하는 방법
- setting -> Compiler 검색
- Build, Execution, Deplyment / Compiler / Java Compiler 클릭
- Use complier를 eclipse로 변경
(proceed on errors 체크 확인)
- apply -> ok
- 현재 실행할 .class 파일을 한번 실행한다.
5-1. Run/Debug Comfigurations에서 현재 실행할 파일의 .class 클릭
5-2. 헤당 파일에 들어가서 modifiy options 클릭
5-3. add before launch task 클릭
5-4. add task 클릭
5-5. bulid, no error check 클릭
5-6. build 삭제 옆에 있는 x 클릭해서 삭제
5-7. apply클릭 ok클릭
- 실행
잘 된다.
주의
현재 실행 할 파일을 실행하면 여전히 에러가 발행한다.
컴파일러를 이클립스로 변경하지 않고 하면 class의 위치를 찾지 못하는 거 같은 에러가 발생한다.
추가적인 해결 방안이 있는 것 같은 링크
https://www.jetbrains.com/help/idea/run-debug-multiple.html#before_launch
https://www.jetbrains.com/help/rider/Run_Debug_Multiple.html
https://stackoverflow.com/questions/73162343/run-multiple-main-methods-in-java-with-intellij
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000121924-Is-it-possible-to-run-two-different-main-classes-at-the-same-time
Third-party plug-in: https://plugins.jetbrains.com/plugin/7248-multirun.