Intellij Spring 'Could not find or load main class' Caused by 'java.lang.ClassNotFoundException'

 

* 스프링 부트에서 'Gradle'이 아니 'Maven' 을 사용할 때 발생한 에러 입니다. (Gradle 도 동일할 수 있습니다.)

 

Maven 프로젝트 생성 및 개발 진행 중 특정 시점으로 소스를 롤백이 필요했습니다.

소스 롤백 후 start를 하는데 클래스를 찾을 수 없다는 에러가 발생 했고, 에러 해결 방법을 찾아 봤습니다.

 

아래와 같이 진행 해주세요.

1.Build 메뉴의 'Build Project' 또는 'Rebuild Project' 를 실행 해주세요.

(인텔리제이는 가끔 클래스를 최신화 하지 않기 때문에, build를 다시 해주세요.)

'The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.'

 

새로운 스프링 프로젝트를 생성 및 등록하고 톰캣을 실행하려고 하니 해당 에러가 발생했습니다.
실행시킨 톰캣의 포트가 유효하지 않아 발생된 에러로 아래와 같이 해결해 주시면 됩니다.

 

 

1. 'Server' 탭의 톰캣 더블클릭 

 

 

2. 'Ports'의 'Tomcat admin port' 및 'HTTP/1.1' 포트가 입력 됬는지 확인

 -> 보통 새로 설정 하면 'Tomcat admin port'가 '-' 로 설정되있는 경우가 있어 위의 에러가 발생 합니다.

 

 

 

3. 정상적으로 실행된 톰캣입니다.

스프링 프로젝트 JUnit 테스트에서 Method 'initializationError' not found. Opening the test class. 가 발생하는 원인은,

프로젝트에 JUnit 라이브러리가 추가되지 않았기 때문입니다.

아래의 과정을 거쳐 라이브러리를 등록 해주세요.

 

 

 

1. 프로젝트 우클릭 -> Properties -> Java Build Path -> Libraries -> Add Library

 

 

 

2. JUnit 선택

 

 

 

3. 의존성 추가된 JUnit 버전을 선택 하세요. 저는 JUnit4를 사용중입니다.

 

 

 

 

4. 등록 후 Apply and Close를 클릭 하고 실행 하시면 됩니다.

 

스프링 프로젝트를 생성하고 jsp 파일에 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 에러가 발생 하였습니다.

프로젝트 runtime을 위해 톰캣을 추가 해주고, Dynamic Web Module, Java, JS 의 버전을 같이 수정 해주세요.

 

* 프로젝트 우클릭 -> Properties -> Project Facets -> 아래 그림 2-1을 참고 해주세요

 

그림 2-1

 

'Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다'

 

잘 돌아가던 서버가 수정도 안 했는데 404에러가 발생하면, 톰캣 서버 Web module 의 path를 수정 해주시면 됩니다.

* 현재 아래 그림의 수정이 완료된 상태입니다. 

아래 그림2-1 처럼 올려야 할 프로젝트를 선택 하고 edit를 눌러주세요. 그리고 필요한 path를 입력 하시면 됩니다.

Spring 프로젝트를 진행 중이시라면 ' / ' 로 하시면 됩니다.

 

ps. 그나저나 저 HTTP 에러 상태 페이지를 영어로 보여지게 할 수 없나요 ㅇ_ㅇ? 

스프링 프로젝트를 구동 시키기 위해 톰캣 서버에 프로젝트를 추가 하려고 하는데 아래와 같은 에러가 발생 했습니다.

'Tomcat version 8.5 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, and 7 Web modules '

해당 에러는 톰캣, 자바, 웹 모듈 버전 등 서버 관련 버전이 맞지 않기 때문입니다.

저 같은 경우는 servlet 4.0을 사용하려고 헀는데 톰캣 8.5를 사용 하기 때문에 발생 했습니다.  

 

위의 표를 확인하고 프로젝트 생성 전에 버전을 맞추시거나, Project Facets에서 버전을 수정해주시면 됩니다.

Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

 

초기 스프링 부트 프로젝트를 생성 하고 해당 에러가 발생 했습니다.

부트는 기본적으로 jsp를 지원 해주지 않기 때문에 jsp 관련 라이브러리를 추가 하면 정상적으로 실행 할 수 있습니다.

 

아래 코드를 pom.xml에 추가하시면 되고, 버전은 필요하신 버전에 맞춰 수정 하시면 됩니다 !

 

	
		
		    jstl
		    jstl
		    1.2
		
		
		    javax.servlet.jsp
		    javax.servlet.jsp-api
		    2.3.1
		    provided
		

매번 실무에서는 만들어져 있던 프로젝트를 import/pull 해서 사용 하다보니,

초기 프로젝트 세팅(프로젝트 생성 및 깃 저장소 연결) 을 직접 해본적이 없었습니다.

스터디를 위해 프로젝트를 만들다가 삽질을 하도 많이해서 시간낭비를 또 하지 않기 위해 블로그에 정리 합니다.

상세한 설명보다는 절차적으로 이미지로 표현 하였습니다.

 

 

 

1.  https://github.com 접속 및 회원 가입.

 

2. 'Start a Porject' 버튼 클릭 후 그림(2-1) 처럼 작성

그림(2-1)

 

 

 

3. 생성된 깃 저장소 링크 확인. (5번 항목에서 사용 됨)

 

 

 

 

4-1. STS 및 이클립스 실행 -> Window -> Show View -> Other... 선택 (그림 4-1)

4-2. Git Repositories 선택 (그림 4-2)

그림(4-1)
그림(4-2)

 

 

 

5-1. Git Repositories 항목 -> Clone a git repository 선택 (그림 5-1)

 - 항목이 없으면 Window -> Show View -> Other... 에서 검색

5-2 Location.Url 항목에 3번에서 생성된 Git Url 복사 및 붙여넣기 (그림 5-2)

5-3 next (그림 5-3)

5-4 Git 저장소를 선택 후 Finish (그림 5-4)

 

그림(5-1)
그림(5-2)
그림(5-3)
그림(5-4)

 

 

 

6. Git Repositories 항목에서 추가된 저장소를 확인 (그림 6-1)

그림(6-1)

 

 

 

 

7-1. 스프링 프로젝트 생성 (그림 7-1)

   New -> Spring Boot -> Spring Starter Project

7-2 설정 하고 싶은 정보 입력 (그림 7-2)

7-3 기본 설정을 위한 Spring Web 선택 (그림 7-3)

7-4 Finish (그림 7-4)

그림(7-1)
그림(7-2)

 

그림(7-3)

 

그림(7-4)

 

 

 

8. 생성된 프로젝트 확인

 - unknown 에러 발생시 해당 링크 참조 https://gabrielyj.tistory.com/178

그림(8-1)

 

 

 

9-1. 프로젝트 우클릭 -> Team -> Share Project (그림 9-1)

9-2. 부모 디렉토르 확인 후 Finish 

 

그림(9-1)
그림(9-2)

 

 

 

 

10. Git 저장소와 연동된 프로젝트를 확인. '프로젝트 이름[깃 저장소 이름]'

 

 

11-1. 프로젝트 파일 깃 저장소로 Commit 하기 위해서 , Unstaged Changes 파일들을 Staged Changes 로 보내기

        파일 선택 -> 우클릭 -> Add  to index (그림 11-1)

11-2 Staged Changed 된 파일 확인 (그림 11-2)

11-3 Commit message 작성 (그림 11-3)

11-4 커밋 작업 후 깃 저장소로 Push (그림 11-4)

11-5 마스터 브랜치 확인 후 머지 및 Finish 확인

11-6 최종 메세지 확인 후 종료

그림(11-1)
그림(11-2)
그림(11-3)
그림(11-4)
그림(11-5)
그림(11-6)

 

 

 

12. Github 홈페이지에서 커밋 내용 확인 (그림 12-1)과 (그림 12-2) 처럼 최근 커밋 내용이 출력

그림(12-1)
그림(12-2)

스프링 프로젝트를 처음 생성 했는데, unknown 에러가 발생하여 난감하신 분들이 많다고 생각됩니다.

아래 그림(1-1), 그림(1-2) 같은 에러가 발생 하는 분들에게 도움이 되고자 포스팅 합니다.

 

해당 문제는 막 생성된 maven을 생성 할 수 있게 pom.xml 에 등록을 해주시면 쉽게 해결 됩니다.

 

 

그림(1-1)
그림(1-2)

 

 

 

1. https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-jar-plugin 

   해당 URL에서 사용 하고 싶으신 플러그인 버전을 선택 해주세요.

 

Maven Repository: org.apache.maven.plugins » maven-jar-plugin

Builds a Java Archive (JAR) file from the compiled project classes and resources. VersionRepositoryUsagesDate3.1.x3.1.2Central 0 May, 20193.1.1Central1Dec, 20183.1.0Central5Apr, 20183.0.x3.0.2Central10Jun, 20163.0.1Central 0 Jun, 20163.0.0Central 0 May, 20

mvnrepository.com

 

 

 

2. pom.xml 의 <properties>에 아래와 같이 추가 해주고, 해당 jar파일이 다운로드 될 때까지 기다려 주세요.

	
	
		3.1.1
		1.8
	

위에 글이 깨지시는 분은 아래 텍스트를 추가 해주세요 !

<properties>  <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties>

 

 

 

3. 우선 pom.xml 에 에러가 해결된것을 확인 하실 수 있지만, 여전히 프로젝트 아이콘에는 에러 표시가 존재 합니다.

그림(3-1)

 

 

4. 'Problems' 항목에서 해당 에러를 확인 후, 그림2, 3과 같이 우클릭 -> 'Quick Fix' -> 'Finish' 버튼을 눌러주세요. 

(못 찾으시면, 상단 Window -> Show View -> Problems 를 선택 해주세요)

그림(4-1)
그림(4-2)
그림(4-3)

 

 

 

5. 해당 과정을 완료 하시면 그림(5-1) 같이 모든 에러가 해결 됬음을 확인 하실 수 있습니다.

그림(5-1)

 

 

Could not delete /.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/appname/WEB-INF/lib. May be locked by another process


잘 돌아가던 서버가 퇴근하고 출근하니 위에 에러가 뜨면서 실행이 되지 않았습니다.ㅠㅠ

그래도 구글링 하니 간단한 방법으로 해결이 가능해서, 다른 분들에게 도움이 되고자 포스팅 합니다!

 

톰캣이 실행될때 이전에 올라간 tmp0 폴더의 파일들이 삭제되지 않아서 생기는 문제인것 같습니다.

1. 우선 server 의 사용 하시는 톰캣 우클릭->그림(2)와 같이 'Clean' 과 'Clean Tomcat Work Directory'를 실행 해주세요.

그림(1)
그림(2)

 

 

 

2. 저 같은 경우는 위 두번의 Clean을 진행 하였을때 다시 서버 실행이 가능 했습니다.

   하지만 그래도 실행이 되지 않는다면, org.eclipse.wst.server.core 디렉토리의 tmp0 폴더를 삭제 해주시면 됩니다.

   사용자 마다 경로가 다를 수 있지만, 워크스페이스/.metadata/.plugins/org.eclipse.wst.server.core 는 동일하니, 

   해당 폴더에 있는 tmp0 폴더를 삭제 하신 다음, 위에 두가지 Clean을 다시 실행 하시면 문제가 해결 됩니다 :)

 

 

+ Recent posts