본문 바로가기

Eclipse

(18)
equinox란 해당 글은 eclipsecon 2009에 발표한 Getting started with Equinox & OSGi By Jeff McAffer 글을 참고하였습니다. Equinox란?Equinox란 OSGi 스펙을 구현한 module화 되고, dynamic한 자바 런타임 환경이다. 이것은 작고 성능에 맞출 수 있고 커스텀화 할 수 있다. Equinox는 공항 check-in kiosk부터 Websphere나 Spring dm server와 같은 높은 성능의 어플리케이션 서버까지 이클립스 생태계를 형성시키고 있다. 이 글은 Equinox가 어떻게 동작하고, 어떻게 사용할 수 있는지에 대해 알려준다. 우리는 모듈화의 기본, 표기법, 모듈 만들어보기에 대해 알아본다. 최종적으로, 우리는 Equinox의 런타임요소..
이클립스 RCP 개념 우리는 Java Application 개발을 편하게 하기 위해 Eclipse IDE를 사용하고 있다. 그렇다면 Eclipse IDE는 무엇으로 개발이 된 것일까? 위의 그림을 살펴보면 RCP(Rich Client Platform) 위에서 개발된 것을 확인할 수 있다. RCP 어플리케이션은 플러그인의 집합(SWT, JFace, Workbench UI)과 플러그인을 실행하기 위한 런타임(Platform Runtime - based on OSGi) 으로 구성된다. 그렇다면 우리가 궁금해야 할 것들은 이클립스가 플러그인을 어떻게 관리하는지? 플러그인은 스스로에 대한 정보를 가지고 있다. 그리고 함께 동작해야 할 다른 플러그인에 대한 정보를 지정한다. -> 런타임이 이걸 보고 의존성 해결해주고 플러그인을 결합해준..
#Class Loader LinkageError 1. Issue Issue ( j2objc에서는 guava 18 버전을 사용하는데, 우리 프로젝트에서 dependency가 15버전에 걸려있어서 생긴 문제(?) ) Check point1. ClassLoader가 library (.jar) 를 로딩하는 곳 ( .../eclipse-jee-mars-2-win3-x86_64/eclipse/plugins) 에 누가 가져다 주는가? 2. 가져다 주는 애를 찾는다면, 무슨 버전을 사용할지 무슨 라이브러리를 사용할지는 어디에 명시하는가? 2. ClassLoader 3가지 방식delegation ( JDK에서 default - ask parent, then me )post-delegation ( common in plugins, servlets, isolation하고..
java.lang.ClassNotFoundException: jdk.nashorn.internal.runtime.ECMAException cannot be found by org.eclipse.wst.jsdt.core 문제 java.lang.NoClassDefFoundError: jdk/nashorn/internal/runtime/ECMAExceptionjava.lang.ClassNotFoundException: jdk.nashorn.internal.runtime.ECMAException cannot be found by org.eclipse.wst.jsdt.core_2.0.0.v201605200022 원인 ClassLoader가 제대로 동작하지 않음 ( 클래스로더에 대한 공부 - http://happyer16.tistory.com/94 ) Nashorn 은 Java 8+ /lib/ext 폴더에 있는 자바스크립트 런타임 라이브러리이다.이클립스 플러그인들은 Boot class loader를 사용하는데, 이는 lib/ex..
Platform architecture ( 이클립스 플랫폼 아키텍처 ) Eclipse documentation 번역 Platform architecture 이클립스 플랫폼은 플로그인의 개념에 따라 구성되어 있다. 플러그인들은 시스템에서 하나의 기능을 하는 코드의 묶음으로 구성되어 있습니다. 기능은 코드 라이브러리 형태, 플랫폼 extension, documentation의 형태 로 제공됩니다. 플러그인은 다른 플러그인에서 기능을 추가할 수 있도록 해주는 extension point를 정의할 수 있다. Eclipse SDK는 기본적인 플랫폼에다가 plugin 개발에 용이한 두가지 주요 툴을 포함하고 있다. JDT ( java development tool)는 자바 개발 환경을 구현한다. PDE ( plugin developer environment ) 는 plugin과 ext..
TroubleShooting 1. plugin을 못찾아서 pom.xml 실패하고 배포과정에 포함시키지 못함 - 해결 : 해당 plugin을 zip으로 묶어서 install new software를 해주면 됨 ( eclipse - install details에 해당 plugin이 설치되어 있지 않으면 실패)
Memory leak 찾고 고치기 Memory Leak 문제 고치기 1) Quick Fix : Eclipse memory Leak warning / errorsoutputstream과 같은 것들을 close해주지 않는 경우 compile 과정에서 에러를 던지도록 설정이 가능하다.Preference > Java Compiler > Error / warnings > leak 검색- close() 해줘야 되는 시점은 언제지? / 안해주면 어떤 문제가 있는거지? ( close() 글 확인 ) 하지만 모든 file의 close 여부를 detect 하지 못하기 때문에 2번째 방법도 필요하다. 2) VisualVM 사용하기outputstream과 같은 것들을 close해주지 않는 경우 compile 과정에서 에러를 던지도록 설정이 가능하다.Prefe..
기타 1. 내 local 환경에서는 js.command 잘 찾는데 왜 다른 사람들거에서는 못찾을까? - 원인 : 아마 plugin이 제대로 설치가 안되어서 그런거겠지? 아님 top.ide가 걔를 알아야 하나? Launch Configuration 설정은 어느 파일에 떨어질까? 실행환경 나만 아냐...?? 다른 사람이랑 공유하고 싶음.... Common Tab > Save as에서 설정 가능 그럼 xxx.launch라는 파일이 떨어짐
Help>About 커스터마이징하기 About 자기 제품에 대한 설명을 담고 있는 페이지 ( help > about ... ) plugin.xml에서 runtime.products에 있는 property를 이용 http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def_extpt.htm 코드로 정보 보기 Platform.getProduct() 변수 - properties를 보면 plugin.xml - runtime.products 밑에 선언한 property 들을 확인할 수 있음.
Error 모음 Caused by: org.osgi.framework.BundleException: Exception in .start() - 원인 : Unable to acquire application service - 원인 : org.eclipse.core.runtime이란 plugin이 실행되지 않아 어떤 product 자체가 실행이 안된거임- 해결 ? {product경로}/configuration/config.ini 파일에서 osgi.bundles property가 org.eclipse.core.runtime@start를 포함하도록 수정 Build 순서가 잘못된 경우 이렇게 에러가 날수도 있음 [ERROR] Cannot resolve project dependencies:[ERROR] Software being..