private static NativeTransportImpl loadImpl(String packageName, String classPrefix) { try { Class<? extends ServerSocketChannel> serverSocketChannelClass = loadClass(ServerSocketChannel.class, packageName, classPrefix, ServerSocketChannel.class.getSimpleName()); Class<? extends SocketChannel> socketChannelClass = loadClass(SocketChannel.class, packageName, classPrefix, SocketChannel.class.getSimpleName()); Class<? extends EventLoopGroup> eventLoopGroupClass = loadClass(EventLoopGroup.class, packageName, classPrefix, EventLoopGroup.class.getSimpleName()); Constructor<? extends EventLoopGroup> constructor = eventLoopGroupClass.getConstructor(int.class, ThreadFactory.class); return new NativeTransportImpl(serverSocketChannelClass, socketChannelClass, constructor); } catch (ReflectiveOperationException e) { LOGGER.debug("Failed to load {}", classPrefix, e); return null; } }