在 C# 中使用 Saxon-HE 的 ClassNotFoundException

ClassNotFoundException using Saxon-HE in C#

我在使用 .NET 版本的 Saxon-HE 时遇到了问题。我们有一个引用 Saxon-HE 9.7.0.7 的 .NET Core 项目。如果我尝试 运行 以下代码:

private static readonly Processor Processor = new Processor();

它给了我一个 ClassNotFoundException for cli.System.Xml.XmlDocument

这是完整的错误信息:

ClassNotFoundException: cli.System.Xml.XmlDocument at IKVM.NativeCode.ikvm.runtime.AssemblyClassLoader.LoadClass(Object classLoader, Assembly assembly, String name)

即使我制作了一个针对 .NET 4.6.1 的 blanco ConsoleApplication 并在该项目中引用了 Saxon,它也会给我 ClassNotFoundException.

我试过清理包缓存,我试过重新安装 Java。

其他人遇到过这个问题吗?这是一个已知问题吗?我能做些什么来修复它?

谢谢!

不知道你用的是SaxonHE9-7-0-7N-setup.exe安装器还是NuGet包。我更喜欢后者。

doc 所述,您项目中的 saxon9he-api 引用需要 Saxon 库 (saxon9he.dll)、IKVM 交叉编译器 (IKVM.Runtime.dll) 和交叉编译的 Java OpenJDK class 库 (IKVM.OpenJDK.*.dll)。您可能缺少其中一些依赖项。

IKVM.NativeCode.ikvm.runtime.AssemblyClassLoaderIKVM.Runtime.dll.

恐怕是个坏消息,IKVMC 的首席开发人员 Jeroen Frijters 告诉我们 IKVMC 目前不支持将 .NET Core 作为目标平台,支持它需要大量工作并且不会很快发生。 .NET 上的 Saxon 完全依赖于 IKVMC,因此在此平台上不受支持。