为什么找不到以下类别

时间:2018-08-17 15:29:35

标签: .net saxon ikvm

这是在使用IKVM的.net应用程序中使用saxon9ee.jar的情况(由于使用了不同的IKVM,我们将分别编译)。

当我遵循快乐路径中没有异常的惯例时,我会设置将任何异常放入调试器。

Saxon为以下类抛出ClassNotFoundException,但运行良好:

  • com.saxonica.ee.domino.DominoNode
  • com.saxonica.xsltextn.style.SaxonElementFactory
  • com.saxonica.ee.extfn.js.IXSLElementFactory

这是问题还是预期的?

更新:好的,这肯定是类加载器(IKVM)的问题。答案是IKVM Class Loader

1 个答案:

答案 0 :(得分:0)

com.saxonica.ee.domino.DominoNode-我觉得这里有点奇怪。如果您的构建包含com.saxonica.ee.domino软件包,那么我希望该类的动态加载成功;如果没有,那么我希望不会尝试动态加载。动态加载是通过调用Configuration.registerExternalObjectModel()来启动的。

com.saxonica.xsltextn.style.SaxonElementFactorycom.saxonica.ee.extfn.js.IXSLElementFactory-与这两个类似,据我所知,仅在实际存在类的情况下才尝试动态加载。

因此,我认为我们在这里看到的是存在该类的情况,但是该类的动态加载失败。这表明类加载环境存在某种问题,并且第一步可能值得调查为什么类加载失败会发生。

如果没有这些“插件”类,Saxon很有可能会运行,因此不加载它们对您的应用程序来说可能不是问题,但这确实向我暗示了类加载的潜在问题可能还有其他更严重症状的环境。