Tag Archives: eclipse

이클립스에서 static import 구문 자동 import 하기

이클립스에서 jUnit 4나 hamcrest, Mockito 등 단위테스트 라이브러릴 사용할 때 번거로운 점이 자동 임포트가 되지 않는다는 점이다. 이클립스에서 static 클래스에 대한 메서드를 사전에 모두 인식하지 못하기 때문이다.

결국 직접 임포트 구문을 써야할 때가 많은데 여간 번거롭지 않다. 이 경우 이클립스의 Content Assist 기능을 활용할 수 있다.

예를 들어 Mockito의 mock 메서드를 사용하는 경우를 생각해 보자. 이 경우 이클립스에서 해당 메서드를 자동으로 임포트하지 못한다. 따라서 아래와 같이

직접 임포트 구문을 작성해야 한다. 이 대신에 아래와 같이 설정하면 자동 임포트 기능을 사용할 수 있다.

  • [Window] – [Preferences]를 연다
  • [Java] – [Editor] – [Content Assist] -Favorites]로 이동한다.
  • [New Type…]을 선택한 후, 아래와 같이 “org.mockito.Mockito”를 입력한 후 [OK]를 누른다.

eclipse_add_new_type_favorite

그러면 아래와 같이 “org.mockito.Mockito.*”이 등록됨을 확인할 수 있다.

eclipse_add_new_type_favortie_after

이제 이클립스의 자동완성 기능을 완벽히 지원받을 수 있게 된다.

 

java.lang.LinkageError: loader constraint violation

STS에서 spring-data-elasticsearch를 사용하여 spring-web 프로젝트를 기동하던 중 아래와 같은 에러가 발생했다.

사용환경

  • STS: STS 3.6.3.SR1
  • spring-data-elasticsearch: 1.1.1.RELEASE
  • Pivotal tc Server: v3.0

원인

직접적인 원인은 servlet-api.jar가 웹 어플리케이션의 lib에 배포되었기 때문으로, servlet-api.jar는 서버에서 제공하므로 배포가 되어서는 안된다(예를 들어 Maven pom 파일에 scope를 provied로 설정)

문제

하지만 내 경우에는 servlet-api.jar가 웹 어플리케이션의 lib에 배포되지 않았음

실제 원인

서버 기동시 관련 sts 플러그인이 실행되는데, 이 경우에는 groovy 플러그인이 기동되면서, 해당 플러그인에 포함된 servlet-api.jar를 서버가 물고 가면서 발생함

해결책

문제가 되는 플러그인을 삭제함.

문제 플러그인은 사용중인 IDE와 버전에 따라 달라질 수 있다. 서버 실행 환경에서 VM 옵션에

-verbose:class

을 추가하여, 문제가 된 플러그인을 찾아서 삭제한다.

 

References

Nasty Class loader issue: “java.lang.LinkageError…