Преобразование библиотеки Java в .NET с использованием IKVMC - Предупреждение IKVMC0108: не файл класса - PullRequest
5 голосов
/ 24 октября 2011

Существует инструмент Java (он называется Mallet) http://mallet.cs.umass.edu/download.php, который я хочу использовать в своем проекте .NET.

Чтобы сначала преобразовать этот инструмент в библиотеку .NET, я попробовалсобрать его в один файл .jar с помощью Apache Ant.Я сделал все в соответствии с инструкциями по ссылке выше.

  1. Скачать Developer Release из репозитория Mercurial.

  2. Скачать Apache Ant, установить JDK,установите JAVA_HOME var для использования Apache Ant.

  3. Используя Ant, я создал один файл mallet.jar.

И затем я бы преобразовалmallet.jar в библиотеку .NET с использованием IKVMC.При конвертации у меня появляется много предупреждений, таких как:

Warning IKVMC0108: not a class file "cc/mallet/util/tests/TestPriorityQueue$1.cl
ass", including it as resource
    (class format error "51.0")

Несмотря на эти предупреждения, mallet.dll был создан.Но когда я пытаюсь сослаться на него из моего проекта .NET, он выглядит «пустым».У него нет классов или пространств имен.Я не забываю сослаться на IKVM.OpenJDL.Core.

И это необычно, что я не могу найти такие же проблемы в Google.

Я думаю, что проблема в предупреждениях.И я никогда не работал с Ant, и я не совсем понимаю весь процесс.

Ответы [ 2 ]

6 голосов
/ 24 декабря 2015

FYI v8.1 (в настоящее время в RC) IKVM поддерживает Java 8:

http://weblog.ikvm.net/2015/08/26/IKVMNET81ReleaseCandidate0.aspx http://sourceforge.net/p/ikvm/mailman/message/34502991/

6 голосов
/ 24 октября 2011

Формат класса версии 51 был представлен в Java 7.

Скорее всего, IKVM еще не поддерживает эту версию, а указанное вами имя файла (cc/mallet/util/tests/TestPriorityQueue$1.class) указывает на анонимный внутренний класс TestPriorityQueue что определенно необходимо для правильной работы библиотеки.

Мое предложение: скомпилируйте Mallet, используя более старый JDK, или , по крайней мере, , используя -source и -target переключатели установлены на 6 (чтобы обеспечить компиляцию для Java 6).

...