Использование IKVM для конвертации JAR (Летающая тарелка - xhtmlrenderer) - PullRequest
3 голосов
/ 01 июня 2010

Я хотел использовать API-интерфейс Flying Saucer в .NET, поэтому попытался использовать IKVM для преобразования библиотеки Flying Saucer :

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

Ответы [ 2 ]

5 голосов
/ 04 июня 2010

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

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

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

2 голосов
/ 01 июня 2010

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

...