2016-05-02 18 views
1

im Ins Strugle mit einem seltsamen Problem. Ich habe eine DLL geschrieben (als Addin für Navision), die eine Konsolenanwendung durch process.start() aufruft. Die Konsolenanwendung, die IKVM verwendet, um pdfbox.net (v1.8.4) zu verwenden.IKVM Gefunden Provider nicht mit Prozess.start während der Verwendung von pdfbox.net

Wenn ich die Konsole-Anwendung direkt ausführen (mit cmd oder "Start" in Visual Studio) funktioniert alles gut. Wenn ich die Konsole app throu Process.Start() aus der Klasse libary (getestet mit Unit-Test (mstest)) oder andere (Test-) Projekt zu starten bekomme ich eine Ausnahme:

javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found

Meine Process.Start aus der Klasse lib:

string[] args = {pdfFilePath, zugferdFilePath}; 
ProcessStartInfo processStartInfo = new ProcessStartInfo 
{ 
    FileName = exeFile, 
    Arguments = string.Join(" ", args), 
    WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), 
    ErrorDialog = true, 
    RedirectStandardError = true, 
    RedirectStandardOutput = true, 
    UseShellExecute = false 
}; 
Process process = Process.Start(processStartInfo); 

Einzelheiten über die Ausnahme: Nachricht:

Provider com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found

Quelle:

IKVM.OpenJDK.XML.API

Stacktrace:

((java.lang.Throwable)_exception).StackTrace " bei javax.xml.parsers.DocumentBuilderFactory.newInstance() bei Mustang.ZUGFeRDImporter.parse() in C:\GIT\KCorp.NAV.Zugferd\KCorp.Nav.Zugferd.Split\Mustang\ZUGFeRDImport.cs:Zeile 124. bei KCorp.Nav.Zugferd.Split.Zaumzeug.showZUGFeRD(String filepath,String xmlFilePath) in C:\GIT\KCorp.NAV.Zugferd\KCorp.Nav.Zugferd.Split\Zaumzeug.cs:Zeile 30."

Hat jemand eine Idee haben, wie man dieses Problem beheben?

Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

danke im voraus.

Antwort

0

Es ist ein Klassenlader-Problem. Versuchen Sie, die folgende vor der Zeile Sie die Fabrik nennen:

var s = new [email protected](); 

Dadurch wird die Montage zwingen wird, zu laden und hat für mich jedes Mal, wenn ich erlebt habe dieses Problem gearbeitet.