Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent0
at io.netty.util.internal.PlatformDependent.getSystemClassLoader(PlatformDependent.java:694)
at io.netty.channel.nio.NioEventLoop$4.run(NioEventLoop.java:171)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:167)
at io.netty.channel.nio.NioEventLoop.(NioEventLoop.java:149)
at io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:102)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:64)
at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:49)
at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:70)
at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:65)
at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:56)
at org.apache.spark.network.util.NettyUtils.createEventLoop(NettyUtils.java:51)
at org.apache.spark.network.client.TransportClientFactory.(TransportClientFactory.java:103)
at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:99)
at org.apache.spark.rpc.netty.NettyRpcEnv.(NettyRpcEnv.scala:70)
at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:442)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:56)
at org.apache.spark.SparkEnv$.create(SparkEnv.scala:245)
at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:174)
at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:257)
at org.apache.spark.SparkContext.(SparkContext.scala:432)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2320)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)
at com.atguigu.content.ContentRecommender$.main(ContentRecommender.scala:48)
at com.atguigu.content.ContentRecommender.main(ContentRecommender.scala)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:128)
```
这种一般都是依赖版本不兼容的问题,你看下和这个博客是不是同一个问题 https://blog.csdn.net/ZHY_ERIC/article/details/123955468
该回答引用GPT:
这个错误表明在运行程序时,Java虚拟机(JVM)找不到类的定义(class information)。通常,这是因为代码尝试使用某个类,而该类的定义当前不在类路径上。建议检查以下几点:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.32.Final</version>
</dependency>
如还有疑问,可留言帮助解决。
根据 一,很明显NoClassDefFoundError的错误是因为在运行时类加载器在classpath下找不到需要加载的类,所以我们需要把对应的类加载到classpath中,或者检查为什么类在classpath中是不可用的,这个发生可能的原因如下:
对应的Class在java的classpath中不可用
你可能用jar命令运行你的程序,但类并没有在jar文件的manifest文件中的classpath属性中定义可能程序的启动脚本覆盖了原来的classpath环境变量因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的如果你工作在J2EE的环境,有多个不同的类加载器,也可能导致NoClassDefFoundError
下面我们看一些当发生NoClassDefFoundError时,我们该如何解决的样例。
NoClassDefFoundError解决方法
当发生由于缺少jar文件,或者jar文件没有添加到classpath,或者jar的文件名发生变更会导致java.lang.NoClassDefFoundError的错误。当类不在classpath中时,这种情况很难确切的知道,但如果在程序中打印出System.getproperty(“java.classpath”),可以得到程序实际运行的classpath运行时明确指定你认为程序能正常运行的 -classpath 参数,如果增加之后程序能正常运行,说明原来程序的classpath被其他人覆盖了。