2 u010631191 u010631191 于 2017.01.13 21:11 提问

web项目嵌入netty客户端报错

正在做一个java web项目,需要与netty服务端通信,就写了一个netty客户端,客户端单独运行
时可以通信,也就是放在main函数里面可以运行,嵌入项目时就报错,不知道是什么原因,求指教!以下是项目中启动客户端代码,netty客户端代码以及报错信息。

 启动代码:
 NettyClient nc = new NettyClient();
                        nc.connect();


netty客户端代码:

public class NettyClient {
public void connect() throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group).channel(NioSocketChannel.class)
.option(ChannelOption.TCP_NODELAY, true)
.handler(new ChannelInitializer() {
public void initChannel(SocketChannel ch)
throws Exception {
ch.pipeline().addLast(new MyClientHandler());
}
});
int port=8097;
String host="192.168.41.141";
ChannelFuture f = b.connect(host, port).sync();
f.channel().closeFuture().sync();
} finally {
group.shutdownGracefully();
}
}
}

public class MyClientHandler extends ChannelHandlerAdapter {

@Override
public void channelActive(ChannelHandlerContext ctx) {
    byte[] send={1,86,1,1};
    ByteBuf Bsend =Unpooled.copiedBuffer(send);
    ctx.writeAndFlush(Bsend);
    ctx.close();
}
public void channelRead(ChannelHandlerContext ctx, Object msg)
        throws Exception {
}

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
    ctx.close();
}

}

 报错信息:
 java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1169)
    at com.gyjy.action.Ldkz.hlkzXF(Ldkz.java:564)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:217)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:217)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:105)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:361)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1080)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:75)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:757)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2287)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

1个回答

JE_GE
JE_GE   2017.01.14 12:42

很明显啊,
java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
jar文件没得

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
netty服务端及客户端,支持HTTP和WEBSOCKET和SSL
自己基于netty开发的服务端,支持spring配置服务器启动模式:http,websocket,ssl等,并支持NIO和OIO方式,项目已应用于生产,可以通过jar形式加入其它项目,业务类实现业务service,启动不依赖于其他应用服务器,内附启动脚本。 已在生产使用,压力未测试,欢迎反馈。 个人原创,部分代码参考网上其他文献。
基于Netty5.0中级案例一之Netty与Web
 基于Netty5.0中级案例一之Netty与Web 2015-1-1 付政委 Netty5.0 中级篇 前言介绍:     本案例主要介绍如何在javaweb程序中加入Netty,通过web启动Netty来收发客户端连接的发来的数据。     本案例不难只不过因为不在单独使用Netty所以划分到中级篇章中。 环境需求:     1、jdk1.7     2、MyEclip
Netty服务器宕机后,客户端如何与服务器进行连接
服务器宕机,写一个spring定时任务或者linux的shell脚本,定时的去监测与服务器的连接是否可用,如果可用就发数据.不可用就重新建立连接
netty客户端引发的线程血案(一)
netty客户端引发的线程血案前言近日,在某个项目发现线程数量持续暴涨,最后OOM的问题,开发人员很头疼,刚好来问我,就协助分析了一下,观察服务器状态,CPU使用者正常,内存消耗持续增加,socket数量正常,通过jstack看,线程数量持续增加,大量线程处于epollWait函数调用中,线程状态是RUNNABLE,线程持续增加,很不正常,了解了项目的情况,发现新增了一个功能,就是使用了esl-cl
利用Netty来构建WebSocket后端服务系统的例子程序
最近在研究Netty来构建SOA架构,其中也包括了前端接入的HTTP/WebSocket方面的接入响应,而WebSocket方面的接入响应对于移动端的消息推送研发至关重要,这里就将在这块研发时的异步socket响应服务例子程序
客户端(手机端)掉线或者强制退出,netty服务端如何捕获到
如果客户端,比如手机,发生断网、强制退出、正常退出等各种情况,服务端希望都捕捉到; 实现方法: 1. ChannelHandlerAdapter 继承ChannelHandlerAdapter,并被添加到ChannelPipeline; ChannelPipeline pipe = ch.pipeline(); ChannelHandlerAdapter customerInboundHandle
Netty 之 Netty简单的重连机制
其实重连机制并不是多么多高深的技术,其实就是一个在客户端做一个简单的判断,如果连接断了,那么就重新调用连接服务端的代码 当然,我们重连的动作肯定是发生在断连之后发生的,我们可以在上篇的心跳机制的基础上,简单地修改一下客户端的启动代码就可以了: 我们在连接断了之后,我们一般会在finally的方法中去释放资源,这边我们应该不去释放资源,我们在finally里面进行
netty获取ip
InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); String clientIP = insocket.getAddress().getHostAddress(); System.out.println(clientIP);
netty整合springmvc
http协议是基于TCP的一种应用层协议,因为我们可以自己通过tcp的数据来进行编解码http协议。一般情况下,我们都是通过request对象和response对象进行与用户进行交互的。     netty是一款对用户非常友好的网络框架,更甚者提供了大量的基于tcp的用户层的协议封装,我们可以直接使用,因为在netty注册编解码器的时候,我们只需要加上netty自带的http的编解码器,就可以在
netty框架学习之初始篇---多客户端的实现
前面基础已经搞定,那么解决问题的重点来了,如何使用netty搭建一个可以识别不同客户端的server? 晚上回来经过一个多小时的奋斗,搞定了这个问题,但是我也不知道我这种方式是否有什么问题或者说方向是否正确,感觉与自己用bio写的socket似乎是一样的道理,简单的地方就是无需关注线程问题。 上代码, package com.netty.demo2; import java.net