当前位置: 首页 > 知识库问答 >
问题:

java - 代码报错如下,springboot做的webservice服务,测试发布的时候,为什么报jar包找不到?

严劲
2023-04-23

报错

20:45:16.837 [main] DEBUG org.apache.cxf.resource.DefaultResourceManager - resolving resource <org.apache.cxf.wsdl11.WSDLManagerImpl/bus> type <interface org.apache.cxf.Bus>
20:45:16.837 [main] DEBUG org.apache.cxf.resource.DefaultResourceManager - resolving resource <null> type <interface org.apache.cxf.Bus>
20:45:16.932 [main] DEBUG org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory - Creating Jetty HTTP Server Engine for port 8000.
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/SessionManager
    at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory.getOrCreate(JettyHTTPServerEngineFactory.java:116)
    at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory.createJettyHTTPServerEngine(JettyHTTPServerEngineFactory.java:268)
    at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.retrieveEngine(JettyHTTPDestination.java:121)
    at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.finalizeConfig(JettyHTTPDestination.java:154)
    at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:281)
    at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:131)
    at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:84)
    at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:63)
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:170)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
    at com.suiwei.webservice.Test.main(Test.java:16)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.SessionManager
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 11 more

Process finished with exit code 1

依赖
image.png

发布服务代码,运行该代码,控制台爆出了如上错误

public class Test {
    public static void main(String[] args){
        //发布服务的工厂
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        //设置服务地址
        factory.setAddress("http://localhost:8000/ws/hello");
        //设置服务类
        factory.setServiceBean(new HelloServiceImpl());
        //发布服务
        factory.create();
        System.out.println("发布成功");
    }
}

服务代码

public class HelloServiceImpl implements HelloService {

    public String sayHello(String name){
        return name+"-success!";
    }
}

服务接口

import javax.jws.WebService;
/**
 * 对外发布服务的接口@WebService标识*/
@WebService
public interface HelloService {
    /**
     * 对外发布服务的接口的方法
     */
    public String sayHello(String name);
}

共有1个答案

柴默
2023-04-23

经过我的测试,你应该是引错了依赖,使用如下依赖可以正常运行你的代码:

<!-- 应该是这些依赖,你的依赖可能适用于普通的spring项目而非springboot -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-websocket</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jetty</artifactId>
    <version>3.5.5</version>
</dependency>

image.png

 类似资料:
  • 这是我的第一个JMH基准测试。我可能做错了一切,但是... 我的基准看起来是这样的 是我开始的...等了又等,然后杀了它。我怀疑在< code>@Setup中有问题,所以我简化了它,但是什么都没有改变。这场赛跑开始时相当乐观... 然后什么都没发生。过了很长时间,它继续写下20行像 和5行像 然后它输出一些结果 并更正其估计的eta: 我的是否比我想象的更频繁地被调用,或者还有什么其他原因导致了缓

  • 如图,代码来自官方文档的reference,版本也是1.0.0-rc.13

  • 测试目的 主要了解Nacos的服务发现性能负载和容量,协助我们更好的管理Nacos性能质量,帮助用户更快的运用评估Nacos系统负荷。 测试工具 我们使用自研的PAS性能评估服务平台进行压测,其原理是基于利用JMeter引擎,使用PAS自动生成的JMeter脚本,进行智能压测。 测试环境 1.环境 指标 参数 机器 CPU 16核,内存32G 集群规模 3节点 Nacos版本 1.0.0 2.设置

  • 错误 C1001 内部编译器错误。 错误 E0065 应输入“;” 为什么会显示这种错误啊

  • 当我使用iReport v2.0.4制作一些带有子报告的报告时,我遵循了这个代码示例 现在我想运行Java这个报告。我的代码是: 给出以下错误 现在我正在更改我的IReport版本5.5像这样的错误 保存我的报告Path=E:\Myproject\NetBeansProjects\Inventory_control_system_for_hotel\Mainreportname.jrxmlSub

  • 问题内容: 我知道Java中的垃圾回收是自动化的。但是我知道,如果你调用代码,那么JVM可能会或可能不会决定此时执行垃圾回收。这究竟如何工作?JVM看到时会根据什么基础/参数确切地决定执行(或不执行)? 在这种情况下,是否有任何示例是个好主意呢? 问题答案: 实际上,它通常决定进行垃圾回收。答案取决于许多因素,例如您正在运行的JVM,它处于哪种模式以及正在使用哪种垃圾收集算法。 我不会在您的代码中