본문 바로가기

Linux

[Maven 빌드 에러] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure

에러 문구

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure

 

bad path element "/root/.m2/repository/com/mchange/c3p0/0.9.5.2/mchange-commons-java-0.2.11.jar": no such file or directory  이 문구는 핵심이 아닙니다. 이건 각자 상황마다 다르게 나타날 수 있습니다. bad path element..~ 정도만 똑같을 듯

아무튼 위의 에러문구에 주목!

 

에러메세지 (잘 안보이니 확대해서 보세요..)

 

 

에러 원인

에러 문구를 해석해보자면 말그대로 본인의 프로젝트명 (필자의 경우 musicchart) 에 설정된 maven-compiler-plugin:2.5.1 버전으로 컴파일하는데 실패했다는 뜻입니다.

 

즉, 저 컴파일을 돌리고 있는 서버에 설치된 메이븐 버전을 확인해보세요. 

# mvn -version

Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.8, vendor: Ubuntu, runtime: /usr/local/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.3.0-1019-aws", arch: "amd64", family: "unix"
root@musicprogram:/home/ubuntu/app/step1/MusicProgram# cd ..
root@musicprogram:/home/ubuntu/app/step1# ./deploy.sh

 

저는 3.6.0 으로 나오군요.

 

하지만, 프로젝트의 pom.xml에 명시된 maven complier 버전은 2.5.1 로 되어 있었습니다.

그러니깐 위에서 저런 에러가 떴겠죠?

 

 

 

해결 방법

이렇게 메이븐 컴파일러 버전을 서버에 설치된 컴파일러 버전과 똑같이 바꿔주니 해결되었습니다.

 

 

다시 프로젝트 컴파일을 시도해보니, 3.6.0 버전의 컴파일러로 바뀌면서 성공적으로 빌드되는 걸 볼 수 있습니다.

 

 

필자는 여기에 주목 안하고 mchange-commons-java-0.2.11.jar 가 없다는 문구에만 집중해서 pom.xml 에 mchange 관련 dependency 추가하기도 하고.. 저 jar파일을 톰캣 구동 시, 읽지 않고 넘어가도록 jarScan을 skip하는 설정을 tomcat의 context.xml에 설정하기도 하고 별짓 다했지만 아무것도 안통했다는..

 

 

깊게 파고 싶지 않아서 (지쳐서..) 정확히는 모르겠지만,

유추하기에는 mchange-commons-java-0.2.11.jar 파일을 다운받지 못한 이유는

서버에 설치된 3.6.0 버전으로는 다운받을 수 없는 2.5.1 버전만의 jar 파일이지 않았나 싶습니다. (혹은 그 반대거나)