OSGi에서 번들에서 제이 보스 7.1.1 동적 클래스 로딩 이다ClassNotFoundException가있는 동안 내가 보스 7.1.1에 간단한 OSGi 프레임 테스트 번들을 배포하고 동적으로</p> <pre><code>Class clazz = Class.forName("org.jacorb.orb.ORB"); </code></pre> <p>내가 가진 모든를 수행하여 Jacorb ORB의 인스턴스를하려고
java.lang.ClassNotFoundException: org.jacorb.orb.ORB from [Module "deployment.test:1.0.0" from Service Module Loader]
이미 무슨 짓을 :
- 을 나는 F를 추가
standalone.xml
는 JBoss 구성 또는 osgi-subsystem에<capability name="org.jacorb" startlevel="1"/>
기능이있어org.jacorb
모듈이로드됩니다. 문제가 이미 해결되었으므로 테스트 번들 설치가 실패합니다. - 내가 (또한
-
< XML version = "1.0"encoding = "UTF-8"? > < 보스 배포 구조 > < 배치 > < 종속성 > < 모듈 명 = "org.jacorb"/ > </종속 > </배포 > </보스 배포 구조 >
export
옵션 및없이 시도) 내
MANIFEST.MF
에
org.jacorb
에
Dependencies
-Descriptor 선언 : 나는 다음과 같은 내용으로 내
META-INF
에
jboss-deployment-structure.xml
을 추가
Dependencies: org.jacorb export
또한 실험을 수행했습니다. ClassLoader와 함께 ContextClassLoader가 null
이라는 것을 깨달았습니다. 그러나 결국 Class.forName()
을 특정 클래스 로더를 사용하도록 변경할 수 없으므로이를 비 테스트 코드로 적용 할 수 없습니다.
그럼 왜이 ClassNotFoundException을 얻습니까? 사전에
감사는 일반 OSGi 번들을 가지고는 org.jacorb.orb.ORB 클래스를 참조해야하는 경우
알렉스
당신은'Import-Package : org.jacorb.org' 또는'Import-Package : org.jacorb.org; resolution = optional'을 시도 했습니까? 추천 방법은 DynamicImport-Package가 아니라는 것입니다. 또한 Class.forName() *에는 클래스 로더에 대한 선택적 매개 변수가 있습니다. – eis