블로그 이미지

GUEST

카테고리 없음 2010. 10. 4. 11:23

ATF 설치시 주의사항 - 02

앞에서 이어지는 글.

Mozilla XPCOM, Xulrunner 1.9.2 를 eclipse plugin으로 자체 제작하여 설치하면,  ATF 0.3.0에서 문제가 발생하는 부분이 있다. 

CSS View의 Box(nsIBoxObject)를 표시하는 부분인데 관련 소스는 아래와 같다.

org.eclipse.atf.mozilla.ide.ui.css.BoxModelPaintListener;
org.eclipse.atf.mozilla.ide.ui.css.BoxModelContentProvider;
org.eclipse.atf.mozilla.ide.ui.inspector.properties.BoxModelProperty;

또한 실행시에 Cache 서비스 부분에 에러가 난다. 

org.mozilla.xpcom.XPCOMException: The function "getServiceByContractID" returned an error condition  (0x80004002)
at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method)
at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143)
at $Proxy1.getServiceByContractID(Unknown Source)
at org.eclipse.atf.mozilla.ide.ui.netmon.model.impl.MozillaCacheService.getSession(MozillaCacheService.java:40)
at org.eclipse.atf.mozilla.ide.ui.netmon.model.impl.MozillaCacheService.getResponseBody(MozillaCacheService.java:54)
at org.eclipse.atf.mozilla.ide.ui.netmon.model.impl.MozHTTPResponse.getBody(MozHTTPResponse.java:25)
at org.eclipse.atf.mozilla.ide.ui.netmon.RequestResponsePanel.setSelection(RequestResponsePanel.java:477)
at org.eclipse.atf.mozilla.ide.ui.netmon.NetworkMonitorPage$1.selectionChanged(NetworkMonitorPage.java:77)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2162)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1699)
at org.eclipse.jface.viewers.TableViewer.setSelection(TableViewer.java:158)
at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:392)
at org.eclipse.atf.mozilla.ide.ui.netmon.NetworkMonitorPage$5.run(NetworkMonitorPage.java:184)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:334)
at org.eclipse.atf.mozilla.ide.ui.browser.PopupWindowBrowserListener.open(PopupWindowBrowserListener.java:94)
at org.eclipse.swt.browser.WindowCreator2.CreateChromeWindow2(WindowCreator2.java:203)
at org.eclipse.swt.browser.WindowCreator2$3.method4(WindowCreator2.java:55)
at org.eclipse.swt.internal.mozilla.XPCOMObject.callback4(XPCOMObject.java:365)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)

nsICacheService cacheService = (nsICacheService) Mozilla.getInstance().getServiceManager().getServiceByContractID("@mozilla.org/network/cache-service;1", nsICacheService.NS_ICACHESERVICE_IID);

XPCOM 1.9.1과 1.9.2의 API가 호환되지 않는 부분이 있고, 또 Cache 서비스에 문제가 있는 듯 하다.

일단, BoxService 부분을 해결하기 위해,
ATF의 소스를 받아 설치하고 에러 부분을 수정하여 다시 배포하도록 하자.

# ATF 소스 받기
여기를 참고하여 받고, org.eclipse.atf.mozilla.ide.ui 프로젝트에서 관련된 소스를 수정한다.
배포에 문제가 있는데, org.eclipse.atf.mozilla.ide.ui 프로젝트만 따로 버전업하여 feature를 만들어 배포하면 설치하지 못하고 에러가 난다. ATF의 feature를 보면 의존도가 밀접하게 걸려 있어서 이를 추적하기가 쉽지 않다.

# ATF 수정 배포
ATF를 통째로 배포해 보기로 하자.
ATF 소스는 jsdt 관련 프로젝트에 의존성이 있기 때문에 이도 설치해 주어야 한다.
Helios update에서 Web, XML, and Java EE Development를 체크하여 설치하면 의존도 문제를 해결할 수 있다. (정확히 어떤 프로젝트인지 확인하지 못했다.)

ATF 소스에서 보이는 2개의 feature - org.eclipse.atf.feature, org.eclipse.atf.mozilla.ide.feature를 widard를 통해 offline으로 export하자.
XPCOM, Xulrunner 1.9.2를 설치한 다른 eclipse의 dropins 폴더에 이를 복사해 넣고 기동하여 작동을 확인해 보자.










,
TOTAL TODAY