【问题标题】:Xalan Java extensions 'Cannot find class' error on JRE 7JRE 7 上的 Xalan Java 扩展“找不到类”错误
【发布时间】:2012-08-23 16:12:49
【问题描述】:

我遇到了“找不到类 'pkg.XSLTFunctions”。 JRE 7 上的错误导致使用 Xalan 编译 XSL 失败。这在 JRE 6 中完美运行。以下是我的应用程序的一些细节。

该应用程序是一个 Win32 本机 EXE,它使用 JNI 加载 JVM,向系统类加载器添加一个 JAR,并使用 JNI 在该 JAR 中运行一个类。 Java 类然后从 JAR 中取出一个 XSL 并尝试编译它。

JAR 还包含一个作为 Xalan Java 扩展的 Java 类,并在 XSL 中指定(如下所示)。

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xalan="http://xml.apache.org/xalan"
    xmlns:util="xalan://testSoe.XSLTFunctions"                
    exclude-result-prefixes="p util xalan">

但是,Xalan 找不到这个回调类,XSL 的编译失败。它出错了

ExecGroup-0:err:ERROR:  'Cannot find class 'testSoe.XSLTFunctions'.'

这在 JRE 6 上有效,而这个问题只在 JRE 7 上出现。关于 JRE 6 和 7 之间可能导致这种行为的不同之处的任何指针?

谢谢, 兰吉特

【问题讨论】:

    标签: java xslt xalan


    【解决方案1】:

    找出问题所在。如果在 JVM 中设置了“SecurityManager”,Xalan 引擎(JRE 内部)具有在 boostrap 类加载器中查找回调类的逻辑,否则它将在系统类加载器中查找它。我上面提到的 Win32 EXE 也是我们的 RMI 服务器(一旦加载了 JVM,等等)。 JRE 7 可能将 SecurityManager 设置为将 RMI 设备设置为该进程的 RMI 服务器的一部分。我正在研究关闭它的影响,但我有一个解决方法可以进一步进行!对 JDK 源代码进行了一些调试以解决这个问题!

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多