2009-05-19 12 views
1

Ich habe eine in Java geschriebene API in eine .net-DLL umgewandelt, die IKVM verwendet, und bisher war es gut.Castor und IKVM

Es nutzt im Grunde xml hinter den Kulissen einige Web-Dienste zuzugreifen. Die API ist eine Drittpartei und ich habe keinen Zugriff auf den Quellcode. Die API verwendet Castor, um (glaube ich) XML in Objekte zu binden.

Allerdings, wenn ich damit begonnen, einige der nützlicheren Teile des api zu verwenden, kam ich mit einem Problem mit Castor-up. Mein spezifischer Fehler ist:

„Nested Fehler: org.exolab.castor.mapping.MappingException: die Klasse nicht finden kann ...“

Die erwähnte Klasse Teil des api ist. Von der Reinigung des Webs seems dieses Castor kann nicht auf die Klasse zugreifen, da es in einer separaten Assembly von Castor ist.

Mein Problem ist, dass ich nicht wirklich verstehen, genug über Klassenladeprogramme in Java, und wahrscheinlich nicht weiß genug über IKVM dies zu klären.

Hat jemand verwendet IKVM mit Castor (oder einer anderen Bibliothek, die möglicherweise Reflexion auf Java-Klassen verwendet), und lief, bevor er in dieses Problem?

Antwort

2

Nun, ich bin überrascht, dass niemand für diese keine Antworten hatte, so gab ich meine Frage an die ikvm Mailing-Liste, und bekam eine Antwort.

Die Antwort ist in der Tat mit der Trennung der Castor-Bibliothek und dem 3rd-Party-api-Code zu tun, war ich mit.

Die Lösung, die ich verwendet wurde, war die Möglichkeit, hinzuzufügen:

-classloader:ikvm.runtime.AppDomainAssemblyClassLoader 

, wenn sie mit ikvmc Castor kompilieren.

Dies erlaubt Castor mit dem dritten Teil api zu kommunizieren, und erlaubte mir, einen Bericht vom Web-Service zu greifen.

Verwandte Themen