2015-04-16 3 views
0

Я пытаюсь использовать Stanford CoreNLP (который является проектом Java) в C#.MissingMethodException с использованием IKVM

Я нашел это Nuget package, который содержит CoreNLP, преобразованный в .NET с использованием IKVM, и он отлично работает, однако мне также нужно внести некоторые изменения в проект java.

Я скачал CoreNLP из Github, я могу построить CoreNLP JAR от Ant, и он также отлично работает в упадке, однако У меня возникли проблемы в преобразовании JAR в DLL. Основываясь на некоторых build-log, что я нашел в гугле, я делаю это:

ikvmc.exe -version:2.1 ..\lib\joda-time.jar -out:joda-time.dll 
ikvmc.exe -r:joda-time.dll -version:0.4.7 ..\lib\jollyday-0.4.7.jar -out:jollyday.dll 
ikvmc.exe -version:0.23 ..\lib\ejml-0.23.jar -out:ejml-0.23.dll 
ikvmc.exe -version:1.2.10 ..\lib\xom-1.2.10.jar -out:xom.dll 
ikvmc.exe -version:1.0 ..\lib\javax.json.jar -out:javax.json.dll 
ikvmc.exe -r:joda-time.dll -r:jollyday.dll -r:ejml-0.23.dll -r:xom.dll -r:javax.json.dll -version:3.5.0 ..\javanlp-core.jar -out:javanlp-core.dll 

Все, что я получаю от следующих преобразований несколько предупреждений о упоминаться классифицирован, которые не могут быть найдены:

warning IKVMC0100: Class "org.apache.xerces.parsers.SAXParser" not found 
warning IKVMC0100: Class "junit.framework.TestCase" not found 
warning IKVMC0100: Class "org.apache.xerces.impl.Version" not found 
... 
warning IKVMC0100: Class "junit.framework.TestCase" not found 
warning IKVMC0100: Class "javax.servlet.http.HttpServlet" not found 
warning IKVMC0100: Class "javax.servlet.Filter" not found 
warning IKVMC0100: Class "com.google.protobuf.Descriptors$FileDescriptor$InternalDescriptorAssigner" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage$Builder" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage" not found 
warning IKVMC0100: Class "com.google.protobuf.MessageOrBuilder" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage$ExtendableBuilder" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage$ExtendableMessage" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage$ExtendableMessageOrBuilder" not found 
warning IKVMC0100: Class "com.google.protobuf.Internal$EnumLiteMap" not found 
warning IKVMC0100: Class "com.google.protobuf.ProtocolMessageEnum" not found 
warning IKVMC0100: Class "junit.framework.TestSuite" not found 
warning IKVMC0100: Class "junit.framework.Assert" not found 
warning IKVMC0100: Class "com.apple.eawt.ApplicationAdapter" not found 
warning IKVMC0100: Class "org.junit.Assert" not found 
warning IKVMC0100: Class "org.apache.lucene.analysis.core.KeywordAnalyzer" not found 
warning IKVMC0100: Class "org.apache.lucene.index.IndexWriterConfig" not found 
warning IKVMC0100: Class "org.apache.lucene.util.Version" not found 
warning IKVMC0100: Class "org.apache.lucene.store.FSDirectory" not found 
warning IKVMC0100: Class "org.apache.lucene.index.DirectoryReader" not found 
warning IKVMC0100: Class "org.apache.lucene.search.IndexSearcher" not found 
warning IKVMC0100: Class "org.apache.lucene.search.BooleanQuery" not found 
warning IKVMC0100: Class "org.apache.lucene.search.BooleanClause" not found 
warning IKVMC0100: Class "org.apache.lucene.search.TermQuery" not found 
warning IKVMC0100: Class "org.apache.lucene.index.Term" not found 
warning IKVMC0100: Class "org.apache.lucene.search.BooleanClause$Occur" not found 
warning IKVMC0100: Class "org.apache.lucene.search.TopDocs" not found 
warning IKVMC0100: Class "org.apache.lucene.search.ScoreDoc" not found 
warning IKVMC0100: Class "org.apache.lucene.document.Document" not found 
warning IKVMC0100: Class "org.apache.lucene.index.IndexWriter" not found 
warning IKVMC0100: Class "org.apache.lucene.queryparser.classic.ParseException" not found 
warning IKVMC0100: Class "org.apache.lucene.document.StringField" not found 
warning IKVMC0100: Class "org.apache.lucene.document.Field$Store" not found 
warning IKVMC0100: Class "org.apache.lucene.document.Field" not found 
warning IKVMC0100: Class "org.apache.lucene.search.Query" not found 
warning IKVMC0100: Class "org.apache.lucene.store.Directory" not found 
warning IKVMC0100: Class "org.apache.lucene.index.CheckIndex" not found 
warning IKVMC0100: Class "org.apache.lucene.index.CheckIndex$Status" not found 
warning IKVMC0100: Class "org.apache.lucene.store.NIOFSDirectory" not found 
warning IKVMC0100: Class "org.apache.lucene.util.BytesRef" not found 
warning IKVMC0100: Class "org.apache.lucene.index.IndexReader" not found 
warning IKVMC0100: Class "com.google.protobuf.Descriptors$FileDescriptor" not found 
warning IKVMC0100: Class "com.google.protobuf.Descriptors$Descriptor" not found 
warning IKVMC0100: Class "com.google.protobuf.GeneratedMessage$FieldAccessorTable" not found 
warning IKVMC0100: Class "com.google.protobuf.Descriptors" not found 
warning IKVMC0100: Class "junit.framework.AssertionFailedError" not found 
warning IKVMC0100: Class "org.apache.lucene.document.FieldType" not found 

PS: Я также попытался преобразовать protobuf.jar, но не помог с проблемой, описанной ниже.

Проблема заключается в следующем: когда я заменяю ссылки Nuget для моих недавно скомпилированных ссылок (6 dll), он компилирует файл (находит все ссылки), но выбрасывает это MissingMethodException: Дополнительная информация: Метод не найден: «Void edu. stanford.nlp.pipeline.StanfordCoreNLP..ctor (java.util.Properties).

Может ли кто-нибудь пролить свет?

ответ

1

Думаю, я понял. Вот что исправлено:

  1. Удалены NuGet пакет IKVM 8.0.5449.1
  2. установлен NuGet пакет IKVM 8.0.5449.0 (который был version я использовал для преобразования мои JAR-файлы)
  3. Очистить и восстановить.

Если я правильно понял, то ikvmc.exe, который я использовал для конвертирования файлов JAR, должен быть той же версией связанных библиотек времени исполнения.

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