2010-06-01 102 views
3

我想利用.NET中的飛碟的Java API,所以我試圖用IKVMFlying Saucer庫轉換:使用IKVM轉換一個JAR(飛碟 - xhtmlrenderer)

ikvmc core-renderer.jar 

出於某種原因, IKVMC給了我一個exe core-renderer.exe所以我把它改名爲core-renderer.dll,添加到我的組件和砍死遠

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()); 
     } 
    } 
} 

出於某種原因,它給java.lang.NoClassDefFoundError: com.lowagie.text.DocumentException。我意識到DocumentExceptionITextRender()可能拋出的東西,但我已經包含com.lowagie.text,有什麼想法?

回答

5

原來,這個特殊的情況,我需要呈現兩個飛碟的iText(飛碟的依賴),並有飛碟集引用其相關性:

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

(對於新手:如果您沒有閱讀任何文檔,只是嘗試命令,您還需要確保隨IKVMC提供的DLL文件也存在 - 最簡單的方法是將所有IKVMC文件轉儲到iText JAR文件旁邊)

+0

嘗試了你的命令,但它說core-renderer.dll是一個未知的文件類型 – Drahcir 2010-07-06 15:10:47

+0

顯然,我在一個急速的答案:P我明顯改變了它,參數應該是'jar'文件大聲笑 – kizzx2 2010-07-06 17:15:08

+0

+1這節省了我很多努力。謝謝! – 2010-11-24 03:30:47

2

確保您已將IKVM.AWT.WinForms.dll,IKVM.OpenJDK.ClassLibrary.dll,IKVM.Runtime.dllIKVM.Runtime.JNI.dll組件集成到您的項目中。另外爲了避免生成可執行文件然後重命名,您可以在編譯時指定-target:library開關。

+0

感謝您對'-target:library'的註釋。它感覺比重新命名exe文件更清潔。儘管仍然收到提到的錯誤:\ – kizzx2 2010-06-02 04:08:17