2010-06-01 1 views
3

Я хотел использовать API Летающие блюдца Java в .NET, так что я пытался использовать IKVM преобразовать Flying Saucer библиотеку:Использование IKVM для преобразования JAR (Летающие блюдца - xhtmlrenderer)

ikvmc core-renderer.jar 

По какой-то причине, IKVMC дал мне ех 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. Я понял DocumentException что-то ITextRender() может бросить, но я уже включил com.lowagie.text, любые идеи?

ответ

5

Оказался, что для этой конкретной ситуации, мне нужно, чтобы сделать как летающее блюдце и IText (зависимость от летающего блюдца) и иметь ссылку на сборку летающего блюдца на его зависимость:

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

(для новичков : Если вы не читали какую-либо документацию и просто пытаетесь выполнить команды, вам также необходимо убедиться, что файлы DLL, сопровождающие IKVMC, также присутствуют - самый простой способ сделать это - сбросить все файлы IKVMC рядом с вашими файлами JAR iText)

+0

попробовал свои команды, но он говорит, что core-renderer.dll - это неизвестный тип файла – Drahcir

+0

Очевидно, что я сделал этот ответ в спешке: p я изменил его, и снова, очевидно, аргументы должны быть 'jar' файлы lol – kizzx2

+0

+1 Это сэкономило мне столько усилий. Благодаря! –

2

Убедитесь, что вы включили IKVM.AWT.WinForms.dll, IKVM.OpenJDK.ClassLibrary.dll, IKVM.Runtime.dll и IKVM.Runtime.JNI.dll сборки в свой проект. Кроме того, чтобы избежать генерации исполняемого файла, а затем переименовать его, вы можете указать переключатель -target:library при компиляции.

+0

Спасибо за примечание для '-target: library'. Он чувствовал себя чище, чем переименовать exe-файл. Все еще получая указанную ошибку: \ – kizzx2

Смежные вопросы