java - WSDLToJava 错误:找不到 Velocity 模板文件:org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
问题描述
我正在将 Apache CXF 从 3.2.14 升级到 3.3.8,在构建 wdsl 客户端时遇到了以下异常。
[echo] TOTAL_MIB_ISAM_3.1.0.7.txt
[java] Nov 19, 2020 4:26:42 PM org.apache.velocity.runtime.log.JdkLogChute log
[java] SEVERE: ResourceManager : unable to find resource 'org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm' in any resource loader.
[java]
[java] WSDLToJava Error: Could not find Velocity template file: org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
[java]
[java] org.apache.cxf.tools.common.ToolException: Could not find Velocity template file: org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
[java] at org.apache.cxf.tools.common.VelocityGenerator.doWrite(VelocityGenerator.java:101)
[java] at org.apache.cxf.tools.wsdlto.core.AbstractGenerator.doWrite(AbstractGenerator.java:54)
[java] at org.apache.cxf.tools.wsdlto.frontend.jaxws.generators.FaultGenerator.generate(FaultGenerator.java:133)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:288)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:156)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:404)
[java] at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
[java] at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:185)
[java] Caused by: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm'
[java] at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:474)
[java] at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
[java] at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
[java] at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1514)
[java] at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:299)
[java] at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:358)
[java] at org.apache.cxf.tools.common.VelocityGenerator.doWrite(VelocityGenerator.java:98)
[java] ... 9 more
[INFO] ------------------------------------------------------------------------
使用以下任务使用 WSDLToJava 生成 WDSL 客户端,并在其 cxf.classpath 中指定所有与 cxf 相关的 jar。但它仍然无法在 'org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm' 中找到资源
cxf.xml
<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true" failonerror="true">
<jvmarg value="-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"/>
<jvmarg value="-Dorg.apache.cxf.stax.allowInsecureParser=true"/>
<arg line="${cxf_args}"/>
<classpath>
<path refid="cxf.classpath"/>
</classpath>
</java>
<path id="cxf.classpath">
<fileset file="${org.apache.cxf:cxf-common-schemas:jar}"/>
<fileset file="${org.apache.cxf:cxf-core:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-bindings-soap:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-bindings-xml:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-databinding-jaxb:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-frontend-jaxrs:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-frontend-jaxws:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-frontend-simple:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-rs-client:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-transports-http:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-transports-http-jetty:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-transports-local:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-ws-addr:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-wsdl:jar}"/>
<fileset file="${org.apache.cxf:cxf-rt-ws-policy:jar}"/>
<fileset file="${org.apache.cxf:cxf-tools-common:jar}"/>
<fileset file="${org.apache.cxf:cxf-tools-validator:jar}"/>
<fileset file="${org.apache.cxf:cxf-tools-wsdlto-core:jar}"/>
<fileset file="${org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb:jar}"/>
<fileset file="${org.apache.cxf:cxf-tools-wsdlto-frontend-jaxws:jar}"/>
....
</path>
我需要添加任何其他依赖项吗?
解决方案
与 CXF 团队进行了同样的检查。 https://issues.apache.org/jira/browse/CXF-8390
将速度添加或升级到最新解决了该问题。
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
推荐阅读
- javascript - Gatsby-ssr 和 React 上下文崩溃
- xml - XSLT 比较来自不同节点的元素值 - 性能问题
- python - 使用 Full OuterJoin 合并两个数据帧没有在两个数据帧上获得关键列
- spring-boot - 使用“[]”时,RestController PutMapping 的 url 格式错误
- jquery - 无法在 JqueryUI 中访问 angular(8) 实例
- java - 使用密码时出现 Java POI 异常:/xl/styles.xml 部分未能保存在流中
- jsf - 是否将值放入 EL 中的 viewScope 映射而无需显式转换总是强制转换为 java.lang.String?
- asp.net - Blazor 工作但在计数器页面中显示错误
- google-colaboratory - 谷歌 colab 中的 pandas_profiling.ProfileReport(dataframe)
- amazon-web-services - 如何使用 systemD 服务在 EC2 停止/终止之前运行自定义 shell 脚本