![](/img/trans.png)
[英]java.lang.IllegalArgumentException: Failed to load [netty-tcnative-linux-x86_64, netty-tcnative-linux-x86_64-fedora, netty-tcnative]
[英]netty epoll native throw java.lang.IllegalArgumentException in linux(debian)
启动应用程序时,netty引发以下异常
Caused by: java.lang.IllegalArgumentException
at sun.misc.Unsafe.allocateMemory(Native Method)
at io.netty.util.internal.PlatformDependent0.allocateMemory(PlatformDependent0.java:627)
at io.netty.util.internal.PlatformDependent.allocateMemory(PlatformDependent.java:262)
at io.netty.channel.epoll.IovArray.<init>(IovArray.java:64)
at io.netty.channel.epoll.EpollEventLoop.<init>(EpollEventLoop.java:62)
at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:130)
at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
原因是由另一个包含android-2.3.3.jar的库引起的。 Netty EPOLL本机尝试通过检查功能和类来检测系统。 在PlatformDependent :: isAndroid0()中,由于存在android jar,它将认为自己正在android中运行。
private static boolean isAndroid0() {
boolean android;
try {
Class.forName("android.app.Application", false, getSystemClassLoader());
android = true;
...
因此,函数hasUnsafe0()将错误地认为没有sun.misc.Unsafe。
private static boolean hasUnsafe0() {
if(isAndroid()) {
logger.debug("sun.misc.Unsafe: unavailable (Android)");
return false;
因此,在调用本机内存分配时会引发异常。 它的参数是负值!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.