2009-03-16 2 views
1

관련 네이티브 JNI 클래스에서 일부 DLL을 분리하고 싶습니다.다른 플러그인에서 DLL과 네이티브 호출을 분리하십시오.

플러그인 :

  • DLL이 플러그인에서는이 위치 및 플러그인이로드 될 때 가로드됩니다.
  • 는 플러그인 B에서 JNI 클래스는 기본 방법은 내가 때문에 JNI 클래스는하지을 수 UnsatisfiedLinkError를 얻을 런타임시

A의 DLL에 대한 호출을 포함하는 배치 (A에 따라 달라집니다) 찾을 수 있습니다. 나는 매니페스트 파일을 업데이트하여 클래스 로더의 논리를 업데이트하려고 :

Eclipse-BuddyPolicy: registered 

플러그인 B :

플러그인 A를

Eclipse-RegisterBuddy: A 

을하지만이 또한 작동하지 않습니다. 솔루션을 알고 있습니까?

편집 :

MANIFEST A :

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: %plugin.name 
Bundle-SymbolicName: xxx ;singleton:=true 
Bundle-Version: 1.0.0 
Bundle-Activator: xxx.Plugin 
Bundle-Vendor: xxx 
Bundle-Localization: plugin 
Bundle-NativeCode: native/dll/x1.dll; 
native/dll/x2.dll; 
native/dll/x3.dll; 
native/dll/x4.dll; 
native/dll/x5.dll; 
native/dll/x76.dll; 
native/dll/x.dll; 
native/dll/x7.dll;osname = win32; processor = x86 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.ui, 
org.apache.commons.logging 
Bundle-ClassPath: . 
Eclipse-AutoStart: true 
Eclipse-LazyStart: true 
Bundle-ActivationPolicy: lazy 
Eclipse-BuddyPolicy: registered 
Export-Package: xxx 

MANIFEST B :

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: %plugin.name 
Bundle-SymbolicName: xxx;singleton:=true 
Bundle-Version: 2.1.16 
Bundle-Vendor: xxx 
Bundle-Localization: plugin 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.ui, 
org.apache.commons.lang, 
org.apache.commons.logging, 
A 
Export-Package: xxx 
Bundle-ClassPath: . 
Bundle-Activator: xxx 
Eclipse-RegisterBuddy: A 
Eclipse-AutoStart: true 
Eclipse-LazyStart: true 
Bundle-ActivationPolicy: lazy 
+0

아무도 아이디어가 없습니까? –

답변

1

내 즉시 제안이 아니라 별도의 플러그인보다 플러그인에 대한 조각으로 플러그인 B를 설정하는 것입니다, 이 문제를 해결할 것입니다.

즉, 나는 당신이 당신의 매니 페스트를 전환했다고 생각합니다; JNI의 수행을 시도 플러그인 B는 Eclipse-BuddyPolicy:registered이 있고, A가에 따라 및 플러그인 B.에 등록해야 플러그인해야 호출

, the buddyloading docs을 읽은 후, 나는 buddyloading 정책이 비를 위해 작동하는지 확실하지 않다 말했다 -Java 클래스 파일.

+0

나는 dll을 조각에 넣고 다시 시도하려고한다. 감사. –

+0

조각이 작동합니다. 결과적으로 필자는 프로젝트 기능을 다시 구조화해야하지만 이것은 가장 불투명 한 문제 여야합니다. –

+0

당신을 진심으로 환영합니다. 나는 그것이 작동하게되어 기쁘다! –