c# - 如果在使用 pdfbox.net 时使用 process.start 运行,IKVM 找不到提供程序

标签 c# pdfbox ikvm

我遇到了一个奇怪的问题。 我已经编写了一个 dll(作为 Navision 的插件),它通过 process.start() 调用控制台应用程序。使用 IKVM 的控制台应用程序使用 pdfbox.net (v1.8.4)。

如果我直接运行控制台应用程序(在 Visual Studio 中使用 cmd 或“开始”),一切正常。 如果我从类库(使用单元测试(mstest)测试)或任何其他(测试-)项目通过 process.start() 启动控制台应用程序,我得到一个异常:

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

我的流程。从类库开始:

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);

异常详情: 留言:

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

来源:

IKVM.OpenJDK.XML.API

堆栈跟踪:

((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."

有人知道如何解决这个问题吗?

如果您需要更多信息,请告诉我。

提前致谢。

最佳答案

这是一个类加载器问题。尝试在调用工厂的行之前添加以下内容:

var s = new  com.sun.org.apache.xerces.@internal.jaxp.SAXParserFactoryImpl();

这将强制加载程序集,并且在我每次遇到此问题时都对我有用。

关于c# - 如果在使用 pdfbox.net 时使用 process.start 运行,IKVM 找不到提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36978821/

相关文章:

java - GraalVM 生成的原生镜像可以替代 IKVM 生成的 DLL 吗?

c# - 在什么情况下 'out' 参数有用(不能使用 'ref' 的情况)?

c# - 二维标签不起作用

使用 IKVM 的 C# 库在 IKVM.OpenJDK.ClassLibrary 和 IKVM.OpenJDK.Core 之间存在命名空间歧义

java - 使用 PDFBox 在 PDF 上绘制 vector 图像

java - 无法读取Java中pdf文件生成的文本

java - 使用 IKVM.Net 将 Apache POI .jar 转换为 .dll

c# - MiniProfiler - 在控制台应用程序中复制 Web View 信息

c# - 在 linux/osx 机器上使用 c# 进行 hadoop 流式传输

java - 使用 PDFBox 旋转多个形状的问题