java netty NoClassDefFoundError 找不到eventloop class

在eclipse上用用netty框架写了个demo,直接在eclipse上能编译运行成功,导出了个jar包, 用java -jar 运行后,报出了如下错误:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/Even
tLoopGroup
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more

最开始以为是包没打好, 又重新在manifest里面定义了一下classpath,完事一样还是找不到eventloopgroup class,我工程里面就引用了一个netty-5.0.0.Alpha2,我看了一下这个包,class文件好好的静静的就躺在那里........为什么它找不到,求大神们给个解决方案。。。。

4个回答

检查下classpath环境变量的配置

如果你是用Maven的,你可以run->maven test,就可以看到问题所在,里面会提示如下:
[WARNING] error reading /root/.m2/repository/io/netty/netty-all/5.0.0.Alpha2/netty-all-5.0.0.Alpha2.jar; invalid LOC header (bad signature)
[WARNING] error reading /root/.m2/repository/org/springframework/spring-context/4.3.3.RELEASE/spring-context-4.3.3.RELEASE.jar; cannot read zip file
应该是引用jar包内容不完整。
解决的办法是把提示的文件删掉让maven重新下载就解决了。

jar导出的时候,要选择
expert - runnable jar file - launch configuration(选择主class)

qq_40715729
qq_40715729 这个方式能解决,非常感谢。
2 年多之前 回复

看下编译后的工程是否那个jar包!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java netty 长连接,有什么好的数据老化方案

Java netty 长连接,单机支持50万长连接 每个长连接对象,都有数据缓存,状态机,等各种数据对象; 当这个长连接对象断开连接之后,如何对这些内存中的数据进行老化?

netty启动报错找不到ServerBootstrap.channel

本人在一个tomcat容器的JavaWeb项目中打算用netty与硬件端进行通信,写了一个netty服务如下 ``` public class NettyServer extends HttpServlet{ private static final int port = 12888; // java.lang.NoSuchMethodError: public void bind() throws Exception{ EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); System.out.println("start group handler"); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 100) .handler(new LoggingHandler(LogLevel.INFO)) .childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel socketChannel) throws Exception { // socketChannel.pipeline().addLast(new MsgDecoder(1024*1024,4,4)); // socketChannel.pipeline().addLast(new MsgDecoder(1024*1024,4,4)); socketChannel.pipeline().addLast("readTimeOutHandler", new ReadTimeoutHandler(50)); socketChannel.pipeline().addLast(new LoginAuthRespHandler()); socketChannel.pipeline().addLast(new HeartBeatRespHandler()); socketChannel.pipeline().addLast(new NettyServerHandler()); } }); System.out.println("start bind"); // b.bind(port).sync(); ChannelFuture f = b.bind(port).sync(); System.out.println("netty Server start listen in port " + port); f.channel().closeFuture().sync(); }finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } @Override public void init() throws ServletException { try { new NettyServer().bind(); } catch (Exception e) { e.printStackTrace(); } } // @Override // public void contextInitialized(ServletContextEvent servletContextEvent) { // try { // new Thread(new Runnable() { // @Override // public void run() { // try { // new NettyServer().bind(); // } catch (Exception e) { // e.printStackTrace(); // } // } // }).start(); // }catch(Exception e){ // e.printStackTrace(); // } // } // // @Override // public void contextDestroyed(ServletContextEvent servletContextEvent) { //// // } // public static void main(String[] args) throws Exception { new NettyServer().bind(); } } ``` 使用main方法启动服务在本地测试时是没错的,但是在tomcat部署后项目启动时,试过用Listener与Servlet去控制netty服务的初始化,都在启动时报错: ``` java.lang.NoSuchMethodError: io.netty.bootstrap.ServerBootstrap.channel(Ljava/lang/Class;)Lio/netty/bootstrap/ServerBootstrap; at cn.blue.netty.NettyServer.bind(NettyServer.java:39) at cn.blue.netty.NettyServer.init(NettyServer.java:68) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1282) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1195) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5318) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5610) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1863) 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:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565) 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:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) 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:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) ``` Spring:4.3.7.RELEASE Tomcat:7 JDK:1.8.0 netty:5.0.0.Alpha1 maven:3.3.9 求大神帮忙看看

androidStudio netty已经导入,但是运行时提示找不到netty包

项目中已经将netty的 jar包导入进去了libs文件夹中,但是运行时,还是提示找不到netty包,下面是 日志信息: 1-07 09:41:42.713 10019-10019/com.orangewealth.orangeclient D/Volley: [1] DiskBasedCache.clear: Cache cleared. 01-07 09:41:42.728 10019-10019/com.orangewealth.orangeclient W/dalvikvm: VFY: unable to find class referenced in signature (Lio/netty/channel/Channel;) 01-07 09:41:42.728 10019-10019/com.orangewealth.orangeclient W/dalvikvm: VFY: unable to find class referenced in signature (Lio/netty/channel/Channel;) 01-07 09:41:42.728 10019-10019/com.orangewealth.orangeclient W/dalvikvm: VFY: unable to find class referenced in signature (Lio/netty/channel/Channel;) 01-07 09:41:42.729 10019-10019/com.orangewealth.orangeclient W/dalvikvm: Unable to resolve superclass of Lcom/samton/ibensdk/mainSDK/IBenChatClientHandler; (8073) 01-07 09:41:42.729 10019-10019/com.orangewealth.orangeclient W/dalvikvm: Link of class 'Lcom/samton/ibensdk/mainSDK/IBenChatClientHandler;' failed 01-07 09:41:42.729 10019-10019/com.orangewealth.orangeclient W/dalvikvm: Unable to resolve superclass of Lcom/samton/ibensdk/mainSDK/IBenChatClientHandler; (8073) 01-07 09:41:42.729 10019-10019/com.orangewealth.orangeclient W/dalvikvm: Link of class 'Lcom/samton/ibensdk/mainSDK/IBenChatClientHandler;' failed 01-07 09:41:42.730 10019-10019/com.orangewealth.orangeclient I/dalvikvm: Could not find method com.samton.ibensdk.mainSDK.IBenChatClientHandler.getInstance, referenced from method com.samton.ibensdk.mainSDK.IBenChatClient.ready

netty 开发问题,客户端发了请求后收不到响应

package org.netty_client; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; public class Client { public void connect(String host,int port) { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap strap = new Bootstrap(); strap.group(group); strap.channel(NioSocketChannel.class); strap.option(ChannelOption.TCP_NODELAY, true); strap.handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel arg0) throws Exception { arg0.pipeline().addLast(new ClientHandler()); } }); ChannelFuture future = strap.connect(host, port).sync(); future.channel().closeFuture().sync(); System.out.println("close"); } catch (InterruptedException e) { e.printStackTrace(); }finally { group.shutdownGracefully(); } } public static void main(String[] args) { new Client().connect("127.0.0.1", 8080); } } package org.netty_client; import java.io.UnsupportedEncodingException; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerAdapter; import io.netty.channel.ChannelHandlerContext; public class ClientHandler extends ChannelHandlerAdapter{ private ByteBuf buf; public ClientHandler() { String r = "first request"; byte[] req = r.getBytes(); buf = Unpooled.buffer(req.length); buf.writeBytes(req); System.out.println("send request:" + r); } public void channelActive(ChannelHandlerContext ctx) { ctx.writeAndFlush(buf); } public void channelkRead(ChannelHandlerContext ctx,Object msg) throws UnsupportedEncodingException { System.out.println(1); ByteBuf buf = (ByteBuf)msg; byte[] req = new byte[buf.readableBytes()]; buf.readBytes(req); String body = new String(req,"UTF-8"); System.out.println("receive response:" + body); } public void exceptionCaught(ChannelHandlerContext ctx,Throwable e) { e.printStackTrace(); ctx.close(); } } package org.netty_server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; public class Server { public void bind(int port) { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap server = new ServerBootstrap(); server.group(bossGroup,workerGroup); server.channel(NioServerSocketChannel.class); server.option(ChannelOption.SO_BACKLOG, 1024); server.childHandler(new ChannelInitializer<SocketChannel>(){ @Override protected void initChannel(SocketChannel arg0) throws Exception { arg0.pipeline().addLast(new ServerHandler()); } }); ChannelFuture future = server.bind(port).sync(); System.out.println("启动服务端口:" + port); future.channel().closeFuture().sync(); System.out.println("close"); } catch (InterruptedException e) { e.printStackTrace(); }finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } public static void main(String[] args) { new Server().bind(8080); } } package org.netty_server; import java.io.UnsupportedEncodingException; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerAdapter; import io.netty.channel.ChannelHandlerContext; public class ServerHandler extends ChannelHandlerAdapter{ @Override public void channelRead(ChannelHandlerContext ctx,Object msg) throws UnsupportedEncodingException { ByteBuf buf = (ByteBuf)msg; byte[] req = new byte[buf.readableBytes()]; buf.readBytes(req); String body = new String(req,"UTF-8"); System.out.println("receive request:" + body); String r = "response"; byte[] re = r.getBytes(); ByteBuf resp = Unpooled.copiedBuffer(re); // resp.readBytes(re); System.out.println("send response:" + r); ctx.write(resp); } @Override public void channelReadComplete(ChannelHandlerContext ctx) { ctx.flush(); } public void exceptionCaught(ChannelHandlerContext ctx,Throwable e) { e.printStackTrace(); ctx.close(); } } 测试结果: send request:first request 启动服务端口:8080 receive request:first request send response:response 但是客户端没收到响应,有朋友能看下么,只是写个简单的例子而已

求帮助运行eclipse出现java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: zigbee/Main Caused by: java.lang.ClassNotFoundException: zigbee.Main at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Exception in thread "main" 这是错误的结果显示, 我用cmd java -version 看版本是1.8的,然后配置了环境变量,也导入了comm.jar和jdbc.jar 为什么还是提示错误,弄了好久了,求大伙帮忙!谢谢了!是不是我环境变量配置错了?![图片说明](https://img-ask.csdn.net/upload/201705/09/1494340562_47351.png)

使用其它客户端软件为何接收不了netty服务端返回的数据呢

我编了一个java程序,功能是实现netty的服务端,开启9400端口接收数据。 ``` public class echoServer { private int port; public echoServer(int port) { this.port = port; } public void start() { EventLoopGroup boosGroup = new NioEventLoopGroup(1); //bossGroup EventLoopGroup workerGroup = new NioEventLoopGroup(); //workGroup try{ServerBootstrap sbs = new ServerBootstrap().group(boosGroup, workerGroup) .channel(NioServerSocketChannel.class) .localAddress(new InetSocketAddress(port)) .childHandler(new ChannelInitializer<SocketChannel>() { protected void initChannel(SocketChannel ch) { ch.pipeline().addLast("decoder", new StringDecoder()); ch.pipeline().addLast("encoder", new StringEncoder()); ch.pipeline().addLast(new echoServerHandler()); } }).option(ChannelOption.SO_BACKLOG, 128) .childOption(ChannelOption.SO_KEEPALIVE, true); ChannelFuture future = sbs.bind(port).sync(); System.out.println("Server start listen at " + port); future.channel().closeFuture().sync(); } catch (Exception e) { boosGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } public static void main(String[] args) { new echoServer(9400).start(); } } ``` 客户端使用的软件为Insomnia,向9400端口发送一个消息。 想尝试将服务端接收到的消息原样返回给Insomnia。 ``` public class echoServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("Server channelRead...."); System.out.println(ctx.channel().remoteAddress()+"->Server :"+msg.toString()); ctx.write("Server write"+msg); //原样返回 ctx.flush(); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); ctx.close(); } } ``` 但却失败了 ![图片说明](https://img-ask.csdn.net/upload/201904/06/1554541837_482996.png) 想问一问具体原因是什么? 以及请问如何解决?

java socket客户端连接基于netty4的服务端连接成功后如何接受到服务的响应数据?

在client连接netty4服务器后,能够发送数据,并且服务器也能够接受到,但是返回消息时,client无法接收; 在使用while(true)后只能持续发送消息,无法读取服务端返回的消息。

netty消息转发中client端循环推送的问题

接触netty不久,开发时遇到一个问题,求帮忙 流程:page——> java ——> 第三方server ——>java——>page 单写client向第三方循环发送没有问题,该处打印ctx.channel [id: 0x5916337a, L:/xxx.xxx.x.xxx:55041 - R:/xxx.xxx.x.xxx:4002] ``` public void run(String host, int port) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap bootstrap = new Bootstrap().group(group).channel(NioSocketChannel.class); // 有数据立即发送 bootstrap.option(ChannelOption.TCP_NODELAY, true); // 保持连接 bootstrap.option(ChannelOption.SO_KEEPALIVE, true); bootstrap.handler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { // 自定义解码工具(含拆包粘包处理) ch.pipeline().addLast(new SelfDefineEncodeHandler()); // 自定义方法处理 ch.pipeline().addLast(new HttpClientHandler()); } }); Channel channel = bootstrap.connect(host, port).sync().channel(); System.out.println(channel.toString()); while (true) { ByteBuf bytebuf = Unpooled.buffer(1); bytebuf.writeByte(0xff); channel.writeAndFlush(bytebuf); Thread.sleep(10000); } } catch (Exception e) { e.printStackTrace(); } finally { group.shutdownGracefully(); } } ``` 我先写一个server端接收page传过来的请求 ``` public void run(int port) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast("http-codec", new HttpServerCodec()); pipeline.addLast("aggregator", new HttpObjectAggregator(65536)); pipeline.addLast("http-chunked", new ChunkedWriteHandler()); pipeline.addLast("handler", new DataServerHandler()); } }); Channel ch = b.bind(port).sync().channel(); ch.closeFuture().sync(); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } ``` 然后再 DataServerHandler中的channelRead0中嵌入了netty的client端 ``` // 把外层channel的eventLoop挂接在内层上 Bootstrap bootstrap = new Bootstrap().group(ctx.channel().eventLoop()).channel(NioSocketChannel.class); // 有数据立即发送 bootstrap.option(ChannelOption.TCP_NODELAY, true); // 保持连接 bootstrap.option(ChannelOption.SO_KEEPALIVE, true); bootstrap.handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { // 自定义解码工具(含拆包粘包处理) ch.pipeline().addLast(new SelfDefineEncodeHandler()); // 自定义方法处理 ch.pipeline().addLast(new ChannelInboundHandlerAdapter() { // 内层建立的连接,从这里接收内层的应答,在这里是服务端的应答 @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { //... } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); } }); } }); connectFuture = bootstrap.connect("xxx.xxx.x.xxx", 7789); System.out.println(connectFuture.channel().toString()); while(true){ ByteBuf bytebuf = Unpooled.buffer(1); bytebuf.writeByte(0xff); connectFuture.channel().writeAndFlush(bytebuf); System.out.println("发送请求"); Thread.sleep(10000); } ``` 因为要向connectFuture连接的路径发送,所以调用connectFuture.channel(),但是该处拿到的connectFuture.channel()为[id: 0x71e6e0dc],因此在测试工具中并没有收到ff的消息 将循环写到channelActive以后,测试工具可以不停的接收传过来的ff,但是java无法接收返回的消息 ``` @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { // outerCnl = ctx.channel(); System.out.println(ctx.channel().toString()); while (true) { ByteBuf bytebuf = Unpooled.buffer(1); bytebuf.writeByte(0xff); ctx.channel().writeAndFlush(bytebuf); Thread.sleep(10000); } // super.channelActive(ctx); } ``` 如果未使用循环,返回的信息可以正确的接收解析并传送给page 刚接触netty,有些东西不太懂,有人有过类似的错误么,望解答

netty客户端与服务端连接后的通信

最近做的项目学习netty,时间紧来不及学,希望请教大家一些问题, 1.netty的客户端与服务端建立长连接后,客户端如何与服务端通信?要随心所欲发送自定义的消息? 2.netty的自定义编码器,解码器,希望也能得到帮助, 3.第一个问题为主要问题。 数据包结构: 包头:2字节 0ddd 0fff。 消息体:全部为文本(ASCII码),汉字是GB2312编码。 包尾:2字节 0xxx 0aaa。 最后,先感谢每一位浏览解答的朋友,我会多多赠送C币给那些乐于帮助的人。 补充一些: 我是客户端,需要与服务端长连接;接通后需要发送登陆消息数据包; 每30秒发送一条链路数据 这些我熬夜两天,时间太紧张,希望大家不吝指教。

请教一个关于java+http+netty tcp的问题

![通信结构图](https://img-ask.csdn.net/upload/201802/18/1518945513_27540.png) 为了硬件连接的稳定性,tcp服务不做逻辑控制,只接收硬件采集数据、下发控制命令到硬件,想要做到用户直接通过http请求求下发数据,,bi,硬件采集的数据交给http服务器处理,问题就是http和tcp之间怎么连通,考虑过使用mq消息中间件,有啥其他方案求推荐?

启动项目总是报类找不到找不到

别人用JDK1.7,tomcat1.7开发的项目,我接手之后环境都是1.8的,启动项目总是报 org.springframework.cache.aspectj.AspectJJCacheConfiguration找不到。![图片说明](https://img-ask.csdn.net/upload/201701/01/1483251808_705049.png) 但是我在类中导入这个类是不报错存在的。![图片说明](https://img-ask.csdn.net/upload/201701/01/1483251862_842510.png) 有没有大神帮忙指导下这个是什么原因

java使用netty创年udp服务,Windows可以,linux端口监听被占用

java程序使用netty创建udp监听,在windows开发的idea中一切正常,但是在linux上,总出现端口被占用的问题。我确定的是这个端口没被用,我换了好多端口都是这样。有人知道这是配置还是什么吗?还有个问题就是mysql连接问题,密码,用户名,权限都确认过的。还是出现这种问题。 Windows是好的 ![图片说明](https://img-ask.csdn.net/upload/201807/11/1531272566_691987.gif)在linux就变这样了![图片说明](https://img-ask.csdn.net/upload/201807/11/1531272517_598676.gif)

Netty channelActive 触发发送信息到客户端问题

public class WebSocketFrameHandler extends SimpleChannelInboundHandler<WebSocketFrame> { @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { new Thread(()-> ctx.channel().writeAndFlush(new TextWebSocketFrame("I am channel active"))).start(); } } 像上面那样写可以发送数据到客户端,但是 ctx.channel().writeAndFlush(new TextWebSocketFrame("I am server")); 这样写不可以发送,请问是什么问题? netty 版本: <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.27.Final</version> </dependency>

基于netty-socketio 的java版本聊天室问题请教

 现在在写一个聊天室的接入,在网上发现了基于netty socketio的聊天室,项目在github上面,https://github.com/mrniko/netty-socketio,我很多人给的案例使用介绍都是单个聊天室的创建,根据一个ip和一个端口,创建一个聊天室,但是如果我需要建立多个聊天室,这里不知道该怎么做,我开始的方案是每创建一个房间,就用一个端口,后来我发现这个很浪费资源,就像问问大家有没有好的解决方案或者文章介绍或者案例介绍,谢谢

项目编译运行后报这个错,(在eclipse中不报)是什么原因。

java.lang.IllegalStateException at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1777) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:589) at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:397) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:150) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Exception in thread "nioEventLoopGroup-2-1" java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$2 at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:589) at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:397) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:150) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: io.netty.util.concurrent.DefaultPromise$2 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) ... 5 more Exception in thread "nioEventLoopGroup-3-1" java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$2 at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:589) at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:397) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:150) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Exception in thread "nioEventLoopGroup-2-2" java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$2 at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:589) at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:397) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:150) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745) Exception in thread "nioEventLoopGroup-3-2" java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$2 at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:589) at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:397) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:150) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745)

java redis 找不到jar问题

上图![图片说明](https://img-ask.csdn.net/upload/201607/28/1469676896_11832.png)图上所述 jar有pom 有为啥还说找不到?

Netty4.1运行一段时间后监听端口收不到请求

项目用的Netty4.1编写, 情况是运行一段时间后,监听端口就接收不到前端请求,大概过1分钟自动又恢复,貌似运行越久这种状况出现的越是频繁。上线时并发测试还挺不错的。就是这个问题折腾到现在反复重现,求救大神。 关键代码如下: ``` EventLoopGroup bossGroup = new NioEventLoopGroup(); //定义一个线程组,这个线程组的作用是用来接收客户端的连接 EventLoopGroup workerGroup = new NioEventLoopGroup(); //定义一个线程组,这个线程组用来处理业务逻辑 final EventExecutorGroup e2=new DefaultEventExecutorGroup(32); try { ServerBootstrap b = new ServerBootstrap(); //定义一个ServerBootstarp类,这个类用来初始化netty服务器 //将两个线程组绑定到ServerBootstarp中,channel使用的模式为非阻塞模式 b.group(bossGroup, workerGroup); b.channel(NioServerSocketChannel.class); b.childHandler(new ChannelInitializer<SocketChannel>() { int i = 0; @Override //当有连接接入的时候会调用这个方法 public void initChannel(SocketChannel ch) throws Exception { //server端发送的是httpResponse,所以要使用HttpResponseEncoder进行编码,将HttpResponse转化为ByteBuffer ch.pipeline().addLast(new HttpResponseEncoder()); //server端接收到的是httpRequest,所以要使用HttpRequestDecoder进行解码,将HttpRequset解码为ByteBuffer ch.pipeline().addLast(new HttpRequestDecoder()); //处理接收HTTP报文不全的特殊设置 ch.pipeline().addLast("aggregator", new HttpObjectAggregator(3200)); //收到客户端的连接之后就调用HttpServerInboundHandler来处理 //ch.pipeline().addLast(new HttpServerInboundHandler()); ch.pipeline().addLast(e2,new HttpServerInboundHandler()); } }); b.option(ChannelOption.SO_BACKLOG, 1024); b.childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS,30); b.childOption(ChannelOption.SO_KEEPALIVE, false); ChannelFuture f = b.bind(port).sync(); //和套接字的绑定类似,监听班底的port端口 f.channel().closeFuture().sync(); //等待结束 ```

netty客户端连接附带信息

netty客户端连接服务端时,怎么附带一些信息,比如id等,客户端、服务端代码怎么实现啊?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

删库了,我们一定要跑路吗?

在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。 在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以 binlog 日志就是我们自救的利器。 接下来就来开启程序员自救之路。 想要自救成功,binlog 这把利器一定要好,在自己之前,我们一定要确定我们有 binlog 这把利器,以下就是确保有 bi...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年1月份最新版)

深入了解IT/互联网行业及岗位,请参阅通用IT/互联网岗位招聘计划(最新全岗版)。 深入了解职业晋升及学习路线,请参阅最优职业晋升路线和课程学习指南(最新全栈版)。 内容导航: 1、TIOBE排行榜 2、总榜(2020年1月份) 3、本月前三名 4、参考地址 1、TIOBE排行榜 TIOBE排行榜是根据全世界互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google

立即提问
相关内容推荐