错误!在ant 1.10.8 java 8和xslt中找不到类错误

s3fp2yjn  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(303)

我有运行在ant1.6和java1.4上的遗留代码,现在我正在升级到ant1.10.8和java8。它使用xslt来转换文件。但是,当我使用升级版本运行deploy应用程序时,部署失败,因为它无法加载classpath中存在的类。下面是蚂蚁的目标

<target name="generate">
<property file="/etc/adminkey"/>
<xslt processor="trax" force="true" in="prop.xml" style="xslt/prop.xslt" out="logger.properties">
  <param name="envname" expression="${env.ENV_NAME}"/>
  <param name="packagename" expression="logger"/>
  <param name="rootdir"   expression="${env.ROOT_DIR}"/>
  <classpath>
    <pathelement location="/bin/util.jar"/>
  </classpath>
</xslt>
</target>

我使用的是util.jar中的一个类
我怀疑类路径被忽略了。但不知道为什么。
下面是stacktrace。

generate:
INFO -      [echo] Generating logger.properties file...
INFO -      [xslt] Processing prop.xml to logger.properties
INFO -      [xslt] Loading stylesheet xslt/prop.xslt
INFO -      [xslt] : Error! Cannot find class 'com.group.tools.util.Encrypter'.
INFO -      [xslt] : Error! Cannot find external method 'com.group.tools.util.Encrypter.decryptwithkey' (must be public).
INFO -      [xslt] : Fatal Error! Cannot find external method 'com.group.tools.util.Encrypter.decryptwithkey' (must be public).
INFO -      [xslt] Failed to process prop.xml
ERROR - 
ERROR - BUILD FAILED
ERROR - prop.xml:10: Fatal error during transformation using xslt/props.xslt: Cannot find external method 'com.group.tools.util.Encrypter.decryptwithkey' (must be public).
ERROR - 
ERROR - Total time: 2 seconds
efzxgjgh

efzxgjgh1#

我能够找出问题所在,这是因为xslt中jar的路径是错误的,它使用的是旧版本,因为jar在ant lib目录中可用。

m3eecexj

m3eecexj2#

对于最新版本的ant和jdk,出于安全原因,默认情况下禁止加载扩展函数。看到了吗https://ant.apache.org/manual/tasks/style.html “有关xslt扩展函数的说明”一节。

相关问题