이 질문은 this one의 후속 조치입니다. Paul Webster은 호의적으로 내 문제를 파악하는 데 도움이되었지만 문제가 하나 남았습니다. 클래스 패스 문제가 발생했을 때 익스포트 디버깅 중일 때 플러그인.Eclipse 플러그인 : 디버그 대 클래스 패스 내보내기
- 플러그인이
Bundle-Classpath
에 전적으로 의존 :이 웹에서 다양한 소스에서 정보를 긁어 내가 지금까지 알아 냈어요 반신 반의하는 정보입니다 (이 this page을위한 귀중한 자원이었다)은 MANIFEST.MF 파일에 있습니다. 클래스가 JRE 시스템 라이브러리, 플러그인 종속성 또는
Bundle-Classpath
의 폴더 또는 JAR에서 발견되지 않으면NoClassDefFound
또는NoClassFound
예외가 발생합니다. Require-Bundle
사용하고있는 번들에만 사용하십시오. (즉, 내 작업 공간의 번들입니다. 즉, 내Require-Bundle
목록은 매우 짧을 것입니다.)- 내 번들에 필요한 타사 패키지에는
Import-Package
을 사용하십시오. 이 목록은 내가 사용하는 타사 패키지의 수에 따라 상당히 클 수 있습니다. - 제 3 자 패키지가 필요하며 내보낼 수 없으면 해당 패키지에 대한 번들을 만들어 해당 패키지를 내 보내야합니다. 그런 다음 패키지가 필요한 패키지에서 내보내기 번들을 가져와야합니다.
- 번들 자체가 번들 내에 패키지를 포함하고 내보내는 경우 이러한 패키지를 가져온 패키지로 Manifest에도 넣지 마십시오. (즉, 이미 번들 내 보낸 패키지 수출을 다시하지 않습니다.)
(나는 커뮤니티가 수정으로 위의 정보를 업데이트 할 수 있습니다.)
을 따라서, 모든 베어링 그 마음에, 나는 위의 규칙을 준수하도록 MANIFEST.MF 파일을 수정했습니다. 응용 프로그램을 디버깅 할 때 모든 것이 아름답게 작동합니다. 모든 클래스가 발견되고 플러그인이 예상대로 실행되지만 플러그 인을 내보낼 때 상황이 안 좋게됩니다.
플러그인을 내보낼 때 하나만 제외하고 모든 프로젝트가 컴파일됩니다.
# 7/3/12 10:09:57 AM EDT
# Eclipse Compiler for Java(TM) 0.A76_R36x, 3.6.2, Copyright IBM Corp 2000, 2010. All rights reserved.
----------
1. ERROR in E:\NotesDev\NotesPlugin\com.auth.lotusplugin.popdlg\src\com\auth\lotusplugin\popdlg\SettingsDialog2.java (at line 0)
package com.auth.lotusplugin.popdlg;
^
The type com.ibm.rcp.swt.swidgets.SCoolBar cannot be resolved. It is indirectly referenced from required .class files
----------
1 problem (1 error)
지금, 나는 com.ibm.rcp.swt.swidgets.SCoolBar
도 com.ibm.rcp.jfaceex_6.2.2.20100729-1241.jar
으로 수출 될 일이 com.ibm.rcp.swtex.win32_6.2.2.20100729-1241.jar
, 내 보낸 것으로 확인되었습니다 : 로그 파일에 다음과 같은 메시지가 포함되어 있습니다. 내 프로젝트에서, 나는 다음과 같은 짓을했는지 :
- 종속성 탭을 통해
build.properties
에 추가 번들로 추가com.ibm.rcp.jfaceex
. - 종속성 탭에
com.ibm.rc.swt.swidgets
을 가져온 패키지로 추가했습니다.
그럼에도 불구하고 플러그인을 내보낼 때 클래스를 찾을 수 없습니다. 이 시점에서 나는 플러그인이 디버깅 될 때 컴파일되는 방식과 반출되는 방식 사이에 근본적인 차이가 있다고 가정하고 그 차이점을 알지 못합니다.
누군가가이 마지막 문제를 해결할 수 있도록 도와 주시면 감사하겠습니다.
MANIFEST.MF
및 build.properties
파일의 관련 부분은 참조 용으로 아래에 포함되어 있습니다.
MANIFEST.MF
Require-Bundle: com.ibm.lotuslabs.context.service,
com.ibm.lotuslabs.ui,
com.SatuitCRM.WebServices
Import-Package: com.ibm.rcp.jface.action,
com.ibm.rcp.swt.swidgets,
javax.swing,
lotus.domino,
lotus.notes,
org.eclipse.jface.action,
org.eclipse.jface.window,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.graphics,
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
org.eclipse.ui.plugin,
org.osgi.framework
Export-Package: com.auth.lotusplugin.popdlg;
uses:="com.ibm.rcp.jface.action,
com.ibm.lotuslabs.context.service.document,
com.ibm.lotuslabs.ui,
com.ibm.rcp.jface.action,
com.ibm.rcp.swt.swidgets,
com.satuit.core,
com.SatuitCRM.WebServices,
javax.swing,
lotus.domino,
lotus.notes,
org.eclipse.jface.action,
org.eclipse.jface.window,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.graphics,
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
org.eclipse.ui.plugin,
org.osgi.framework"
Bundle-ClassPath: .,
com.satuit.core.jar,
com.ibm.lotuslabs.ui.jar,
com.ibm.lotuslabs.context.service.jar,
com.SatuitCRM.WebService.jar,
lib/activation-1.1.1.jar,
lib/commons-lang3-3.1.jar,
lib/mail.jar,
lib/SatuitCRM_XML_API2.jar
build.properties
이source.. = src/
output.. = bin/
bin.includes = META-INF/,\
plugin.xml,\
lib/commons-lang3-3.1.jar,\
lib/activation-1.1.1.jar,\
lib/mail.jar,\
lib/SatuitCRM_XML_API2.jar,\
.
additional.bundles = com.ibm.rcp.browser.ie,\
com.ibm.rcp.jfaceex
Eclipse에서 추가 번들이 추가되었습니다. Dependencies 탭에서 * Automated Management of Dependencies * 섹션을 사용하는 경우 명령을 추가합니다. –