'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 에러 상태 페이지를 영어로 보여지게 할 수 없나요 ㅇ_ㅇ? 

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을 다시 실행 하시면 문제가 해결 됩니다 :)

 

 

이번에 스프링을 훨씬 더 깊게 공부하기 위해, 제 마음속 스프링의 신 백기선님의 강의를 듣기 시작 했습니다.

백기선님은 강의 진행에 IntelliJ 를 사용하시는데, 저는 굳이(?) 이클립스를 이용해서 진행 하고 싶었습니다.

분명...인텔리제이가 어려워 이클립스를 사용하실 분이 계시다는 생각으로... 도움이 되고자 포스팅 합니다.

 

 

 

1. 우선 이클립스 상단 메뉴의 File->New->Others에서 SCM을 검색 하신다음, 아래 항목을 선택 해주세요.

 

 

 

 

2. SCM URL 항목에서 git을 선택 하신다음, git repository URI를 입력 하고 Finish 눌러주세요.

 

 

 

 

3. 위에 과정을 거치면 빌드를 위해 Maven이 열심히 파일들을 다운로드 받습니다.

 처음 이 과정을 거치시는 분은 상당히 많은 시간이 소요될 수 있습니다.

 

 

 

4. 빌드가 완료되서 프로젝트가 완성 되면 좋겠지만... 제가 직장 동료의 피씨와 제 노트북으로도 테스트 해본 결과

   공통된 에러가 발생 했습니다.

Multiple annotations found at this line:  - Execution default-testResources of goal    org.apache.maven.plugins:maven-resources-plugin:   3.1.0:testResources failed: Plugin    org.apache.maven.plugins:maven-resources-plugin:3.1.0 or one    of its dependencies could not be resolved: Failure to transfer    com.google.code.findbugs:jsr305:jar:2.0.1 from https://   repo.maven.apache.org/maven2 was cached in the local    repository, resolution will not be reattempted until the update    interval of central has elapsed or updates are forced. Original    error: Could not transfer artifact    com.google.code.findbugs:jsr305:jar:2.0.1 from/to central    (https://repo.maven.apache.org/maven2): The operation was    cancelled. (org.apache.maven.plugins:maven-resources-plugin:   3.1.0:testResources:default-testResources:process-test-resources)

해당 에러는 maven-resources-plugin 이 없어 빌드가 진행되지 않아서 발생 합니다. 해당 플러그인의 dependency를

pom.xml 에 등록하면 에러 사라집니다. 아래 URI에서 원하시는 버전을 선택 하시고,

아래 소스 코드를 pom.xml dependencies에 등록 해주시면 됩니다.

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

		

    org.apache.maven.plugins
    maven-resources-plugin
    3.1.0

 

 

 

5. pom.xml 저장 후 프로젝트 우클릭->Run As->Maven Install 을 실행 해주세요. 

  그러면 프로그램이 열심히 돌기 시작합니다.

 

 

 

 

 

6. 빌드가 종료되면, 프로젝트 우클릭 -> Run As -> Spinrg Boot App 을 실행 해주세요.

   그림(2)와 같이 서버가 실행 됩니다.

  

그림(1)

 

그림(2)

 

 

 

7. 웹 브라우저에 localhost:포트번호(8080) 을 입력 하시면 시작된 고대하던 petclinic 페이지가 접속 됩니다.

 

 

간단하게 필요한 라이브러리에 대해서 설명 드리자면,

Mybatis 생산성/유지보수/성능/이식성을 향상 시키고, 간단하게 DB 사용을 지원 해주는 오픈소스입니다

Mybatis-spring는 하나의 모듈로써 Mybatis와 Spring를 연결 해주는 역할을 합니다.

jdbc는 자바와 데이터베이스의 연결을 해주는 역할을 합니다.

dbcp 디비의 연결을 미리 예측하고 일정 갯수의 connection을 유지하는것 입니다.(효율적인 db사용 가능)


첫 번째로 pom.xml 에 Mybatis, MyBatis-spring 을 추가 해주세요. 각 버젼 확인은 아래 url 에서 해주세요

Mybatis - https://mvnrepository.com/artifact/org.mybatis/mybatis

Mybatis-Spring - https://mvnrepository.com/artifact/org.mybatis/mybatis-spring

spring-jdbc - https://mvnrepository.com/artifact/org.springframework/spring-jdbc

spring-dbcp - https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp


저는 3.4.6(Mybatis) , 2.0.0(Mybatis-Spring), 5.0.0(spring-jdbc), 1.4(commons-dbcp) 을 사용 하겠습니다.



		
		
		
			org.mybatis
			mybatis-spring
			2.0.0
		

		
		
			org.mybatis
			mybatis
			3.4.6
		


		
		
			org.springframework
			spring-jdbc
			5.1.0.RELEASE
		

		
		
			commons-dbcp
			commons-dbcp
			1.4
		




라이브러리 등록이 완료되면 root-context.xml 파일을 설정해야 합니다. 이 파일은 웹과 관련 없는 나머지 객체(bean)을 설정 해줍니다.

원래는 web.xml 최초 서버가 실행될 때 이 파일을 참조 할 수 있게 설정을 해야 하는데, 스프링 프로젝트 생성시 자동으로 입력 됩니다.



	contextConfigLocation
	/WEB-INF/spring/root-context.xml



DB 연결하는 부분은 웹이 아니기 때문에 이부분에서 설정을 해줍니다. (웹은 servlet-context)

아래 항목 중 Namespace를 누르시면 Configure Namespaces 화면을 확인 하실 수 있습니다.

 aop, bean, context, mybatis-spring을 체크 해주세요. 체크를 하시면 아래 그림과 같이 자동으로 bean의 경로가 설정 됩니다.









자동 입력된 root-context.xml 파일에서 주석 밑에 DB접속 정보를 입력 해주시면 됩니다. 

mariadb 는 mysql jdbc를 이용해서 접근이 가능합니다. 찜찜하신 분들은 mariadb jdbc를 사용 해주시면 됩니다.

그리고 dataSource의 destory-method 는 bean 객체의 스코프가 종료될 때 선언된 클래스를 종료하기 위해 close()메소드를 실행 합니다.



	
	
	
      
      
      
      
      
   

   
	
      
      
      
	
    
    
	
      
	
 	



root-context.xml 에 데이터 베이스 관련 정보들을 입력 하신 다음에 아래와 같이 src/main/resources 폴더에

 config, mappers 폴더를 만들어 주세요.

config 폴더에는 mybatis-config.xml 파일을, mappers 폴더에는 testMapper.xml 파일을 생성 해주세요.

각 폴더 및 파일을 생성 하신 다음 아래 내용을 해당 파일에 복사해서 붙여 넣어주세요 !!!

원래 하나의 파일에 설정을 할 수 있지만 저는 다른 config 파일들이 추가 될 예정이라서 효율적인 관리를 위해 따로 등록 하였습니다.






이 두놈은 syntaxHighlight 가 도저히 먹히지 않습니다ㅠㅠ 


(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration></configuration>



(testMapper.xml)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">


  <mapper namespace="mapper">

  

  </mapper>









여기까지 스프링 프로젝트의 DB설정 및 Mybatis 연동이 끝났습니다.

다음 포스트 부터 실제 mybatis를 이용해서 데이터를 불러오고 입력하는 예제를 진행 해보겠습니다.

감사합니다 :)



+ Recent posts