개린이 탈출기

[IntelliJ] 플러그인 최초 실행 시, ClassNotFoundException 예외 발생 본문

에러 해결 목록

[IntelliJ] 플러그인 최초 실행 시, ClassNotFoundException 예외 발생

yooverd 2025. 5. 2. 23:07
728x90
반응형
SMALL

처음 플러그인을 개발해보려는데, 모든게 처음이라 항상 마주하던 예외도 전부 어렵게 느껴졌다.

혹시나 나와 같은 문제를 겪고 있는 초보개발자분께 도움이 될까 싶어서 글을 남긴다.

 


 

문제 상황은 다음과 같다.

1. 인텔리제이의 new project를 활용하여 IDE Plugin 형식으로 프로젝트를 생성했다.

2. 나는 코틀린이 아닌 자바 언어로 개발하려고 하고있었다.

3. Plugin DevKit를 활용하여 Action 클래스를 만들었고 내부 로직은 로그 하나만 찍어봤다.

 

그리고 Run Plugin 을 했을 때, ClassNotFoundException  예외를 마주했다.

Caused by: java.lang.ClassNotFoundException: com.project.프로젝트명.클래스명 PluginClassLoader(plugin=PluginDescriptor(name=프로젝트 아티팩트?, id=com.project.프로젝트명, descriptorPath=plugin.xml, path=~\IdeaProjects\프로젝트 패키지, version=1.0-SNAPSHOT, package=null, isBundled=false), packagePrefix=null, state=active)

 

지정한 경로와 파일명으로 클래스를 찾지 못한 것 같았고, 가끔 마주하는 예외였지만 괜시리 모든게 낯설어서 한참을 헤맸다.

 

 

문제를 해결한 뒤 내가 확인해본 체크리스트를 공유하고자 한다.

 

1. 지정한 클래스명과 plugin.xml 에서 지정한 action 의 class명과 일치하는지 확인한다.

- 대소문자를 확인해준다

- 클래스명이 플러그인 명과 동일하지 않는지 확인해준다. 가끔 이름이 동일할 경우 문제가 발생하기도 한다고 한다.

<actions>
    <action id="ActionGroup.myAction" class="com.project.plugintest.MyAction" text="플러그인 테스트">
        <add-to-group group-id="EditorPopupMenu" anchor="last"/>
    </action>
</actions>

 

2. 패키지명 확인

kotlin 으로 개발하는 경우는 잘 모르겠으나, 나처럼 자바로 개발하는 경우엔 패키지 경로를 확인해본다.

자동으로 프로젝트를 만들 경우, kotlin 프로젝트로 만들어주기 때문에 클래스 경로가 src\main\kotlin\com\project\plugintest\... 와 같이 중간 패키지명이 java 가 아닌 kotlin 으로 설정되어있다.

내 경우엔 kotlin 이 아니라 java 패키지에서 클래스를 찾아오고 있었기 때문에 이 부분이 문제였다.

 

해결 방법은 다음과 같이 2가지인 것 같았다.

1. 소스 패키지 명을 build.gradle.kts 에 명확히 명시한다.

sourceSets {
    main {
        kotlin.srcDirs("src/main/kotlin") // kotlin으로 명확히 지정
        resources.srcDirs("src/main/resources")
    }
}

 

2. kotlin 패키지를 java 로 리팩토링한다.

나는 kotlin 언어를 사용하지 않을 것이었기 때문에 java로 수정했다.

 

3. 컴퓨터 껐다 키기

캐시가 문제가 되는 것 같았다.

clean 하고 build 하는게 너무 오래걸리기도하고, 가끔 캐시가 잘 지워지지 않는 경우 컴터를 껐다 키면 잘 작동하곤 했다.

그래서 이번에 컴터를 그냥 껐다 켰더니 문제가 해결되었다.

728x90
반응형
LIST