Java 如何解决此错误?
我在ant中运行junit测试时遇到以下错误。 测试类需要调用web服务API 有人能帮忙解决吗Java 如何解决此错误?,java,web-services,junit,Java,Web Services,Junit,我在ant中运行junit测试时遇到以下错误。 测试类需要调用web服务API 有人能帮忙解决吗 <error message="javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V" type="java.lang.AbstractMethodError">java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory
<error message="javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V" type="java.lang.AbstractMethodError">java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V
at com.sun.xml.ws.util.xml.XmlUtil.newTransformerFactory(XmlUtil.java:392)
at com.sun.xml.ws.util.xml.XmlUtil.newTransformerFactory(XmlUtil.java:400)
at com.sun.xml.ws.util.xml.XmlUtil.<clinit>(XmlUtil.java:233)
at com.sun.xml.ws.client.WSServiceDelegate.createCatalogResolver(WSServiceDelegate.java:377)
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:363)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:321)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:230)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:211)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:207)
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:114)
at javax.xml.ws.Service.<init>(Service.java:77)
at com.citi.isg.amg.ws.client.AccountManagerWs.<init>(AccountManagerWs.java:42)
at ... ...
我只是自己找到了根本原因 根据,当应用程序尝试调用抽象方法时,会抛出java.lang.AbstractMethodError。通常,编译器会捕获此错误;仅当自上次编译当前执行的方法以来,某个类的定义发生了不兼容的更改时,才会在运行时发生此错误 似乎我还没有在rt.jar中指定抽象类javax.xml.transform.TransformerFactory的实现 在Junit中添加以下内容
<sysproperty key="javax.xml.transform.TransformerFactory"
value="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
让它发挥作用
最后一个Junit任务如下所示:
<junit showoutput="true" printsummary="yes" fork="true" forkmode="once">
<classpath refid="junit.runtime.classpath" />
<sysproperty key="javax.xml.transform.TransformerFactory"
value="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
<batchtest haltonfailure="no" todir="${test.result.dir}">
<fileset dir="${test.src.dir}">
<include name="**/*Test.java" />
</fileset>
<formatter type="xml" />
</batchtest>
</junit>
我只是自己找到了根本原因 根据,当应用程序尝试调用抽象方法时,会抛出java.lang.AbstractMethodError。通常,编译器会捕获此错误;仅当自上次编译当前执行的方法以来,某个类的定义发生了不兼容的更改时,才会在运行时发生此错误 似乎我还没有在rt.jar中指定抽象类javax.xml.transform.TransformerFactory的实现 在Junit中添加以下内容
<sysproperty key="javax.xml.transform.TransformerFactory"
value="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
让它发挥作用
最后一个Junit任务如下所示:
<junit showoutput="true" printsummary="yes" fork="true" forkmode="once">
<classpath refid="junit.runtime.classpath" />
<sysproperty key="javax.xml.transform.TransformerFactory"
value="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
<batchtest haltonfailure="no" todir="${test.result.dir}">
<fileset dir="${test.src.dir}">
<include name="**/*Test.java" />
</fileset>
<formatter type="xml" />
</batchtest>
</junit>
@幽灵猫,我已经分享了我的解决方案。谢谢。@GhostCat,我已经分享了我的解决方案。谢谢