【问题标题】:Error java.lang.NoClassDefFoundError: javax/jws/WebService in Java 11错误 java.lang.NoClassDefFoundError:Java 11 中的 javax/jws/WebService
【发布时间】:2023-04-01 19:21:01
【问题描述】:

在我设置 JaxWsProxyFactoryBean 服务类时,在我的 cxf Web 服务调用中,我遇到了一个致命错误,我在下面给出了它的跟踪。我正在将我的代码从 java 8 迁移到 java 11。

我已在构建路径中设置了所有必需的库 jar、cxf 包和 jax-ws jar,但仍然无法解决错误。 这是我的代码:

        APIWS _stub = null;
        JaxWsProxyFactoryBean fac = new JaxWsProxyFactoryBean();
        
        fac.setAddress(API_WS_URL);
        fac.setServiceClass(APIWS.class);

        _stub = (APIWS) fac.create();
        Client c = ClientProxy.getClient(_stub);
        HTTPConduit http = (HTTPConduit)c.getConduit();
        HTTPClientPolicy policy = new HTTPClientPolicy();
        policy.setConnectionTimeout(0);
        policy.setReceiveTimeout(0);
        http.setClient(policy);

        c.getInInterceptors().add(new LoggingInInterceptor());
        c.getInInterceptors().add(new LoggingOutInterceptor());
        ApiWS.aboutCall(_stub);
        List<String> output = ApiWS.invokeLiqApiWebService(_stub, transformedQueue);
        outputFileList.addAll(output);

错误:

java.lang.NoClassDefFoundError: javax/jws/WebService
at org.apache.cxf.jaxws.support.JaxWsImplementorInfo.initialize(JaxWsImplementorInfo.java:273)
at org.apache.cxf.jaxws.support.JaxWsImplementorInfo.<init>(JaxWsImplementorInfo.java:60)
at org.apache.cxf.jaxws.JaxWsClientFactoryBean.setServiceClass(JaxWsClientFactoryBean.java:43)
at org.apache.cxf.frontend.ClientProxyFactoryBean.setServiceClass(ClientProxyFactoryBean.java:224)
at com.qnb.ib.loaniq.inbound.interfaces.process.LIQProcess.callLiqAPI(LIQProcess.java:331)
at com.qnb.ib.loaniq.inbound.interfaces.process.LIQProcess.process(LIQProcess.java:154)
at com.qnb.ib.loaniq.inbound.interfaces.process.LIQJobManager.processJob(LIQJobManager.java:106)
at com.qnb.ib.loaniq.inbound.interfaces.process.LIQJobManager.main(LIQJobManager.java:132)
Caused by: java.lang.ClassNotFoundException: javax.jws.WebService
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 8 more

需要帮助解决此问题。

谢谢

【问题讨论】:

  • javax 中的任何东西你现在需要自己带上。
  • 我已将 jar javax.jws-api-1.1.jar 与其他相关的 javax jar 一起包含,它解决了问题

标签: java cxf jax-ws cxf-client


【解决方案1】:

这些是我在构建路径中添加的 jar,用于解决调用 Web 服务的问题。

  • FastInfoset-1.2.15.jar
  • gmbal-api-only-3.1.0-b001.jar -ha-api-3.1.9.jar
  • istack-commons-runtime-3.0.7.jar
  • javax.activation-1.2.0.jar
  • javax.activation-api-1.2.0.jar
  • javax.annotation-api-1.3.2.jar
  • javax.jws-api-1.1.jar
  • javax.xml.soap-api-1.4.0.jar
  • jaxb-api-2.3.1.jar
  • jaxb-runtime-2.3.1.jar
  • jaxws-api-2.3.1.jar
  • jaxws-ri-2.3.1.pom
  • jaxws-rt-2.3.1.jar
  • management-api-3.0.0-b012.jar
  • mimepull-1.9.10.jar
  • policy-2.7.5.jar
  • saaj-impl-1.5.0.jar stax2-api-4.1.jar
  • stax-ex-1.8.jar
  • streambuffer-1.5.6.jar -txw2-2.3.1.jar
  • woodstox-core-5.1.0.jar

希望这可以帮助那些在 java 11 中遇到类似问题的人

【讨论】:

  • 你应该考虑使用依赖管理器,比如 Maven。
  • 我的产品没有使用 maven,对于迁移,他们希望保持相似,因此我使用的是旧方法。
  • 如果是这样,这很可能是一个相当旧的应用程序,带有相当旧的 jar 文件,“他们”应该强烈考虑利用这个机会更新到最新版本并运行安全检查和升级 log4j 等框架。在可预见的未来,你很可能不会有类似的机会这样做。
猜你喜欢
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 2019-03-26
  • 2020-06-21
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多