Кастор и ИКВМ
Я преобразовал API, написанный на Java, в.net dll, используя IKVM, и до сих пор это было хорошо.
Он в основном использует xml за кулисами для доступа к некоторым веб-сервисам. API сторонний, и у меня нет доступа к исходному коду. API использует Castor для (я полагаю) связывания XML в объекты.
Однако, когда я начал использовать некоторые из наиболее полезных частей API, у меня возникла проблема с Castor. Моя конкретная ошибка:
"Вложенная ошибка: org.exolab.castor.mapping.MappingException: не удалось найти класс..."
Упомянутый класс является частью API. Из веб-поиска кажется, что castor не может получить доступ к классу, потому что он находится в отдельной сборке от castor.
Моя проблема в том, что я не совсем понимаю о загрузчиках классов в Java и, вероятно, недостаточно разбираюсь в IKVM, чтобы разобраться в этом.
Кто-нибудь использовал IKVM с Castor (или какую-то другую библиотеку, которая, возможно, использует рефлексию классов Java), и сталкивался с этой проблемой раньше?
1 ответ
Ну, я удивлен, что никто не ответил на это, поэтому я отправил свой вопрос в список рассылки ikvm и получил ответ.
Ответ действительно связан с разделением библиотеки Castor и стороннего API-кода, который я использовал.
Решение, которое я использовал, было добавить опцию:
-classloader:ikvm.runtime.AppDomainAssemblyClassLoader
при компиляции Castor с ikvmc.
Это позволило Кастору общаться с 3-й частью API и позволило мне получить отчет из веб-службы.