解决java.lang.ClassNotFoundException: jdk.internal.misc.Unsafe异常

先说一下背景

1.netty-all用的版本4.1.11.Final

            
                io.netty
                netty-all
                4.1.12.Final
            

2.jdk版本1.8.0_151

3.操作系统win10

报错日志如下

19-10-11.14:49:55.916 [JSF-CLI-CONN-com.jd.jsf.service.RegistryService-4-T-1] DEBUG PlatformDependent0      - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable
java.lang.ClassNotFoundException: jdk.internal.misc.Unsafe
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at io.netty.util.internal.PlatformDependent0$6.run(PlatformDependent0.java:295)
	at java.security.AccessController.doPrivileged(Native Method)
	at io.netty.util.internal.PlatformDependent0.(PlatformDependent0.java:288)
	at io.netty.util.internal.PlatformDependent.getSystemClassLoader(PlatformDependent.java:895)
	at io.netty.util.internal.PlatformDependent.isAndroid0(PlatformDependent.java:919)
	at io.netty.util.internal.PlatformDependent.(PlatformDependent.java:70)
	at io.netty.util.ConstantPool.(ConstantPool.java:32)
	at io.netty.util.Signal$1.(Signal.java:27)
	at io.netty.util.Signal.(Signal.java:27)
	at io.netty.util.concurrent.DefaultPromise.(DefaultPromise.java:43)
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:36)
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:58)
	at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:47)
	at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:59)
	at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:77)
	at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:72)
	at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:59)
	at com.jd.jsf.gd.transport.ClientTransportConfig.initEventLoop(ClientTransportConfig.java:181)
	at com.jd.jsf.gd.transport.ClientTransportConfig.getEventLoopGroup(ClientTransportConfig.java:166)
	at com.jd.jsf.gd.transport.ClientTransportFactory.BuildChannel(ClientTransportFactory.java:203)
	at com.jd.jsf.gd.transport.ClientTransportFactory.instanceTransport(ClientTransportFactory.java:177)
	at com.jd.jsf.gd.transport.ClientTransportFactory.initTransport(ClientTransportFactory.java:153)
	at com.jd.jsf.gd.transport.ClientTransportFactory.getClientTransport(ClientTransportFactory.java:78)
	at com.jd.jsf.gd.client.Client$1.run(Client.java:411)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

报错日志看明显,是找不到UnSafe类

从上面日志第一行去看,这个类PlatformDependent0的UnSafe属性有问题,通过定位发现该类是netty-all这个jar包的,进入这个类看,发现其UnSafe类是sun.misc包下面的,该包是jdk1.8,可是为啥为报错找不到jdk.internal.misc包下面的。。。(这个问题至今没找到原因。。如果有人知道可以回复一下)

解决java.lang.ClassNotFoundException: jdk.internal.misc.Unsafe异常_第1张图片

 google了一下,找到的解决方案升级netty-all到4.1.12.Final

https://github.com/netty/netty/issues/6855

你可能感兴趣的:(Java学习笔记)