• runtime过程中,常见jar问题解决


    source download

    Intellij IDEA 有时候不下载不了 code,使用如下命令,在“terminal”下运行

    mvn dependency:resolve -Dclassifier=sources
    
    • 1
    io.netty
    java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.
    
    • 1

    此类问题报错,主要是io.netty 多个jar 冲突导致。、

    使用以下命令查看同一个jar 有哪些版本

    mvn dependency:tree
    
    • 1

    对一些不愿意引入的依赖加上 exclusion

    
                    
                        io.netty
                        netty-common
                    
                    
                        io.netty
                        netty-buffer
                    
                
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    需要注意的是 netty-all 不能顶替所有其他的netty的依赖,比如 netty-common

    
                	 
                        io.netty
    		    netty-all
                	 
                   
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    classnotfound 问题
    Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.util.LookupCache
    
    • 1

    需要引入如下的依赖

    
                com.fasterxml.jackson.core
                jackson-databind
                2.13.4.1
                compile
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    类加载问题

    maven。scope元素主要用来控制依赖的使用范围,指定当前包的依赖范围和依赖的传递性,也就是哪些依赖在哪些classpath中可用。常见的可选值有:compile, provided, runtime, test, system等。

    compile:默认值。compile表示对应依赖会参与当前项目的编译、测试、运行等,是一个比较强的依赖。打包时通常会包含该依赖,部署时会打包到lib目录下。比如:spring-core这些核心的jar包。
    
    provided:provided适合在编译和测试的环境,和compile功能相似,但provide仅在编译和测试阶段生效,provide不会被打包,也不具有传递性。比如:上面讲到的spring-boot-devtools、servlet-api等,前者是因为不需要在生产中热部署,后者是因为容器已经提供,不需要重复引入。
    
    runtime:仅仅适用于运行和测试环节,在编译环境下不会被使用。比如编译时只需要JDBC API的jar,而只有运行时才需要JDBC驱动实现。
    
    test:scope为test表示依赖项目仅参与测试环节,在编译、运行、打包时不会使用。最常见的使用就是单元测试类了。
    
    system:system范围依赖与provided类似,不过依赖项不会从maven仓库获取,而需要从本地文件系统提供。使用时,一定要配合systemPath属性。不推荐使用,尽量从Maven库中引用依赖。
    
    import: import scope只能用在dependencyManagement里面。表示从其它的pom中导入dependency的配置。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
        at org.apache.spark.sql.execution.datasources.v2.odps.SparkHiveExample$.main(SparkHiveExample.scala:42)
        at org.apache.spark.sql.execution.datasources.v2.odps.SparkHiveExample.main(SparkHiveExample.scala)
    Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 2 more
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    如果以上不生效,
    那就去掉依赖中的

    provided
    
    • 1
    IDEA 错误:找不到或无法加载主类

    这个问题同上,相关依赖类变成了 provided,
    去掉这一行后,须进行 “invalidate” 操作

    在这里插入图片描述

    scala 相关类找不到
    java.lang.ClassNotFoundException: scala.reflect.api.TypeCreator
    
    • 1

    如下图,
    可以手动添加 reflect jar

    在这里插入图片描述

    jdk NoSuchMethodError
    org.apache.spark.SparkException: Job aborted due to stage failure: Task serialization failed: java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
    java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;
    	at org.apache.spark.util.io.ChunkedByteBufferOutputStream.toChunkedByteBuffer(ChunkedByteBufferOutputStream.scala:115)
    	at org.apache.spark.broadcast.TorrentBroadcast$.blockifyObject(TorrentBroadcast.scala:325)
    	at org.apache.spark.broadcast.TorrentBroadcast.writeBlocks(TorrentBroadcast.scala:140)
    	at org.apache.spark.broadcast.TorrentBroadcast.(TorrentBroadcast.scala:95)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    Z                               boolean
    B                               byte
    C                               char
    S                               short
    I                               int
    J                               long
    F                               float
    D                               double
    L fully-qualified-class ;       fully-qualified-class
    [ type                          type[] (数组)
    ( arg-types ) ret-type          method type
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    java.lang.NoSuchMethodError: net.Swedz.util.PlayerUtil.getMovementSpeed(Lorg/bukkit/entity/Player;)D

    翻译过来签名是:

     double net.Swedz.util.PlayerUtil.getMovementSpeed(org.bukkit.entity.Player player);
    
    • 1

    可以参见 https://blog.csdn.net/jjlovefj/article/details/77868992

    NoSuchMethodError这个问题是说相应的类中找不到该方法,通常这个问题有以下几种原因:
    
    加载了错误版本的jar包
    多个jar包中的类重复了,jvm加载了错误的类
    
    • 1
    • 2
    • 3
    终结符	类型
    B	byte
    C	char
    D	double
    F	float
    I	int
    Ljava/lang/Object;	java.lang.Object
    J	long
    S	short
    V	void
    Z	boolean
    [	Array
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    Compiled from "Demo.java"
    public class org.apache.Demo {
      public org.apache.Demo();
        Signature: ()V
    
      public org.apache.Demo(int);
        Signature: (I)V
    
      public static void main(java.lang.String[]);
        Signature: ([Ljava/lang/String;)V
    
      public static char method(float);
        Signature: (F)C
    
      public void method(boolean);
        Signature: (Z)V
    
      public void method(boolean, char, byte, short, int, long, float, double);
        Signature: (ZCBSIJFD)V
    
      public java.lang.String method(java.lang.Boolean, java.lang.Integer);
        Signature: (Ljava/lang/Boolean;Ljava/lang/Integer;)Ljava/lang/String;
    
      public void method(boolean[]) throws java.lang.Exception;
        Signature: ([Z)V
    
      public java.lang.String[] method(java.lang.String[][]);
        Signature: ([[Ljava/lang/String;)[Ljava/lang/String;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    lambda 版本问题

    java: -source 1.5 中不支持 lambda 表达式
    (请使用 -source 8 或更高版本以启用 lambda 表达式)

    在这里插入图片描述

    class 类找不到
    Error in query: Can not load class 'xxx.udf.IP2RegionSparkUDF' when registering the function 'default.IP2Region', please make sure it is on the classpath; line 1 pos 7s
    
    • 1

    两个环境下,一个jar 有问题,另一个没问题。
    这种情况要排查 jar 也没有上传完整, 可以解压缩查找这个类,也可以对比两侧的md5值。

    hadoop ls 文件
    ls: Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error Visit https://iwiki.woa.com/pages/viewpage.action?pageId=1888348756
    
    • 1

    在联邦集群中,需要对正在活跃的master 节点进行查询

    或者从 core-site.xml 去提取 fs.defaultFS 对应的域名进行查询。

    SparkSession cannot resolve
    object SparkSession is not a member of package org.apache.spark.sql
    
    
    • 1
    • 2
    
          org.apache.spark
          spark-sql_${scala.binary.version}
          ${project.version}
          provided
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    需要增加的是 spark-sql 的依赖,
    而不是 spark-core 的依赖,这需要记住

  • 相关阅读:
    log4j升级到log4j2 spring
    JAVA-构造方法和文件提取
    codeforces刷题二
    Long类型雪花算法ID返回前端后三位精度缺失问题解决
    maven-assembly-plugin
    【C++】list
    Nacos配置中心集群原理及源码分析
    基于蜉蝣优化的BP神经网络(分类应用) - 附代码
    WebWall-05.SQL-Inject(SQL注入漏洞)
    VsCode 安装 GitHub Copilot插件 (最新)
  • 原文地址:https://blog.csdn.net/zhixingheyi_tian/article/details/132890495