2010-06-01 5 views
3
나는 그래서이 Flying Saucer 라이브러리 변환 IKVM를 사용하려고 .NET의 비행 접시 자바 API를 사용하고 싶었

: 어떤 이유로(비행 접시 - xhtmlrenderer)

ikvmc core-renderer.jar 

을, IKVMC는 java.lang.NoClassDefFoundError: com.lowagie.text.DocumentException을주고, 나에게 core-renderer.exe 그래서 난 core-renderer.dll에 이름이 EXE 파일을 준 내 어셈블리에 추가하고 몇 가지 이유를 들어

using java.io; 
using java.lang; 
using com.lowagie.text; 
using org.xhtmlrenderer.pdf; 

namespace flying_saucer 
{ 
    class FlyingSaucerApp 
    { 
     static void Main(string[] args) 
     { 
      // This works 
      DocumentException dummy = new DocumentException(); 

      ITextRenderer renderer = new ITextRenderer(); 


      // For some reason, this raises NoClassDefFoundError     
      renderer.setDocument(File("hello.xhtml").toURI().toURL().toString()); 
     } 
    } 
} 

멀리 해킹. 실현 한 DocumentExceptionITextRender()일지도 모르지만, 이미 포함되어 있습니다 com.lowagie.text, 어떤 아이디어?

답변

5

그것은이 특정 상황에, 나는 비행 접시와 iText를 (비행 접시의 종속성)를 모두 렌더링 및 의존성에 비행 접시 어셈블리 참조가 필요가 있다고 밝혀졌다 : 설명서를 읽지 않고 명령을 시도하는 중이라면 IKVMC에 포함 된 DLL 파일도 함께 제공해야합니다. 가장 쉬운 방법은 iText JAR 파일 옆에있는 모든 IKVMC 파일을 덤프하는 것입니다)

+0

명령을 시도했지만 core-renderer.dll은 알 수없는 파일 형식입니다. – Drahcir

+0

분명히, 나는 급하게 대답했습니다. : p 변경 했었지만 분명히 인수가 'jar'여야합니다. 파일 lol – kizzx2

+0

+1 이것은 많은 노력을 덜어주었습니다. 감사! –

2

프로젝트에 IKVM.AWT.WinForms.dll, IKVM.OpenJDK.ClassLibrary.dll, IKVM.Runtime.dllIKVM.Runtime.JNI.dll 어셈블리가 포함되어 있는지 확인하십시오. 또한 실행 파일을 생성하지 않고 이름을 바꾸려면 컴파일 할 때 -target:library 스위치를 지정할 수 있습니다. 초보자의 경우 (

ikvmc -target:library itext.jar 
ikvmc -target:library -reference:itext.dll core-renderer.jar 

:

+0

'-target : library'에 대한 메모를 보내 주셔서 감사합니다. 그것은 exe 파일의 이름을 바꾸는 것보다 깔끔하게 느껴졌습니다. 여전히 언급 된 오류가 발생하는 경우 : \ – kizzx2