Spark Sql依赖报错:ClassNotFoundException: org.codehaus.janino.InternalCompilerException

Exception in thread “main” java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerException
at org.apache.spark.sql.catalyst.expressions.objects.GetExternalRowField.(objects.scala:1835)
at org.apache.spark.sql.catalyst.encoders.RowEncoder . . .anonfun$serializerFor 3 ( R o w E n c o d e r . s c a l a : 186 ) a t s c a l a . c o l l e c t i o n . T r a v e r s a b l e L i k e . 3(RowEncoder.scala:186) at scala.collection.TraversableLike. 3(RowEncoder.scala:186)atscala.collection.TraversableLike.anonfun$flatMap 1 ( T r a v e r s a b l e L i k e . s c a l a : 293 ) a t s c a l a . c o l l e c t i o n . I n d e x e d S e q O p t i m i z e d . f o r e a c h ( I n d e x e d S e q O p t i m i z e d . s c a l a : 36 ) a t s c a l a . c o l l e c t i o n . I n d e x e d S e q O p t i m i z e d . f o r e a c h 1(TraversableLike.scala:293) at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36) at scala.collection.IndexedSeqOptimized.foreach 1(TraversableLike.scala:293)atscala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)atscala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps o f R e f . f o r e a c h ( A r r a y O p s . s c a l a : 198 ) a t s c a l a . c o l l e c t i o n . T r a v e r s a b l e L i k e . f l a t M a p ( T r a v e r s a b l e L i k e . s c a l a : 293 ) a t s c a l a . c o l l e c t i o n . T r a v e r s a b l e L i k e . f l a t M a p ofRef.foreach(ArrayOps.scala:198) at scala.collection.TraversableLike.flatMap(TraversableLike.scala:293) at scala.collection.TraversableLike.flatMap ofRef.foreach(ArrayOps.scala:198)atscala.collection.TraversableLike.flatMap(TraversableLike.scala:293)atscala.collection.TraversableLike.flatMap(TraversableLike.scala:290)
at scala.collection.mutable.ArrayOps o f R e f . f l a t M a p ( A r r a y O p s . s c a l a : 198 ) a t o r g . a p a c h e . s p a r k . s q l . c a t a l y s t . e n c o d e r s . R o w E n c o d e r ofRef.flatMap(ArrayOps.scala:198) at org.apache.spark.sql.catalyst.encoders.RowEncoder ofRef.flatMap(ArrayOps.scala:198)atorg.apache.spark.sql.catalyst.encoders.RowEncoder.serializerFor(RowEncoder.scala:183)
at org.apache.spark.sql.catalyst.encoders.RowEncoder . a p p l y ( R o w E n c o d e r . s c a l a : 72 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a s e t .apply(RowEncoder.scala:72) at org.apache.spark.sql.Dataset .apply(RowEncoder.scala:72)atorg.apache.spark.sql.Dataset. a n o n f u n anonfun anonfunofRows 1 ( D a t a s e t . s c a l a : 91 ) a t o r g . a p a c h e . s p a r k . s q l . S p a r k S e s s i o n . w i t h A c t i v e ( S p a r k S e s s i o n . s c a l a : 775 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a s e t 1(Dataset.scala:91) at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:775) at org.apache.spark.sql.Dataset 1(Dataset.scala:91)atorg.apache.spark.sql.SparkSession.withActive(SparkSession.scala:775)atorg.apache.spark.sql.Dataset.ofRows(Dataset.scala:88)
at org.apache.spark.sql.SparkSession.baseRelationToDataFrame(SparkSession.scala:440)
at org.apache.spark.sql.execution.datasources.json.TextInputJsonDataSource . c r e a t e B a s e D a t a s e t ( J s o n D a t a S o u r c e . s c a l a : 124 ) a t o r g . a p a c h e . s p a r k . s q l . e x e c u t i o n . d a t a s o u r c e s . j s o n . T e x t I n p u t J s o n D a t a S o u r c e .createBaseDataset(JsonDataSource.scala:124) at org.apache.spark.sql.execution.datasources.json.TextInputJsonDataSource .createBaseDataset(JsonDataSource.scala:124)atorg.apache.spark.sql.execution.datasources.json.TextInputJsonDataSource.infer(JsonDataSource.scala:97)
at org.apache.spark.sql.execution.datasources.json.JsonDataSource.inferSchema(JsonDataSource.scala:65)
at org.apache.spark.sql.execution.datasources.json.JsonFileFormat.inferSchema(JsonFileFormat.scala:59)
at org.apache.spark.sql.execution.datasources.DataSource. a n o n f u n anonfun anonfungetOrInferFileFormatSchema 11 ( D a t a S o u r c e . s c a l a : 210 ) a t s c a l a . O p t i o n . o r E l s e ( O p t i o n . s c a l a : 447 ) a t o r g . a p a c h e . s p a r k . s q l . e x e c u t i o n . d a t a s o u r c e s . D a t a S o u r c e . g e t O r I n f e r F i l e F o r m a t S c h e m a ( D a t a S o u r c e . s c a l a : 207 ) a t o r g . a p a c h e . s p a r k . s q l . e x e c u t i o n . d a t a s o u r c e s . D a t a S o u r c e . r e s o l v e R e l a t i o n ( D a t a S o u r c e . s c a l a : 411 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a F r a m e R e a d e r . l o a d V 1 S o u r c e ( D a t a F r a m e R e a d e r . s c a l a : 274 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a F r a m e R e a d e r . 11(DataSource.scala:210) at scala.Option.orElse(Option.scala:447) at org.apache.spark.sql.execution.datasources.DataSource.getOrInferFileFormatSchema(DataSource.scala:207) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:411) at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:274) at org.apache.spark.sql.DataFrameReader. 11(DataSource.scala:210)atscala.Option.orElse(Option.scala:447)atorg.apache.spark.sql.execution.datasources.DataSource.getOrInferFileFormatSchema(DataSource.scala:207)atorg.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:411)atorg.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:274)atorg.apache.spark.sql.DataFrameReader.anonfun$load 3 ( D a t a F r a m e R e a d e r . s c a l a : 245 ) a t s c a l a . O p t i o n . g e t O r E l s e ( O p t i o n . s c a l a : 189 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a F r a m e R e a d e r . l o a d ( D a t a F r a m e R e a d e r . s c a l a : 245 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a F r a m e R e a d e r . j s o n ( D a t a F r a m e R e a d e r . s c a l a : 405 ) a t o r g . a p a c h e . s p a r k . s q l . D a t a F r a m e R e a d e r . j s o n ( D a t a F r a m e R e a d e r . s c a l a : 386 ) a t c o m . a t g u i g u . s p a r k s q l . C r e a t e D a t a F r a m e 3(DataFrameReader.scala:245) at scala.Option.getOrElse(Option.scala:189) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:245) at org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:405) at org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:386) at com.atguigu.sparksql.CreateDataFrame 3(DataFrameReader.scala:245)atscala.Option.getOrElse(Option.scala:189)atorg.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:245)atorg.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:405)atorg.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:386)atcom.atguigu.sparksql.CreateDataFrame.main(CreateDataFrame.scala:11)
at com.atguigu.sparksql.CreateDataFrame.main(CreateDataFrame.scala)
Caused by: java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
… 31 more

Caused by: java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException:使用的spark 版本冲突,原因是使用的spark的版本为3.2.1 的,Spark 3.2.1 需要 Janino 3.0.16(官方兼容版本),而非 3.1.6

<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>3.0.16</version>
</dependency>
<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>commons-compiler</artifactId>
    <version>3.0.16</version>
</dependency>

调整后完美解决问题!!!

### Java 中使用 7z 压缩时出现 `ClassNotFoundException` 的解决方案 当在 Java 应用程序中尝试使用 7z 压缩功能并遇到 `java.lang.ClassNotFoundException: org.tukaani.xz.LZMA2Options` 错误时,这通常表明缺少必要的依赖库来支持 LZMA 或 XZ 压缩算法。以下是详细的分析和解决方法: #### 问题原因 该错误表示 JVM(Java Virtual Machine)无法找到类 `org.tukaani.xz.LZMA2Options`。此问题可能由以下原因之一引起: 1. 缺少 Tukaani XZ Library 的 JAR 文件。 2. 配置文件中的路径设置不正确或存在多余的空格、回车等问题[^2]。 #### 解决方案 为了成功处理 7z 压缩文件,需确保项目已正确引入所需的依赖项,并验证其版本兼容性。 ##### 方法一:通过 Maven 添加依赖 如果正在使用 Maven 构建工具,则可以在项目的 `pom.xml` 文件中添加如下依赖项: ```xml <dependency> <groupId>org.tukaani</groupId> <artifactId>xz</artifactId> <version>1.9</version> </dependency> ``` 上述代码片段会自动下载最新版的 Tukaani XZ Library 并将其集成到项目中[^4]。 ##### 方法二:手动导入 JAR 文件 对于未采用构建管理系统的环境,可以从官方仓库或其他可信源获取最新的 `xz-java.jar` 文件,并将其放置于应用的 CLASSPATH 下。例如,在 Eclipse IDE 中可通过右键单击项目 -> Build Path -> Configure Build Path 来完成操作。 注意:确认所选 jar 版本与运行平台匹配且无冲突情况发生。 ##### 方法三:检查配置文件格式 如同 Hadoop 场景下因不当编辑 hdfs-site.xml 导致服务异常一样[^3],任何 XML 类型的设定都应遵循严格的语法规则——避免非法字符干扰解析过程。因此建议再次审视相关参数定义部分是否存在多余空白符或者拼写失误现象。 最后重启应用程序以使更改生效。 ```python import org.tukaani.xz.LZMA2Options; public class TestLZMA { public static void main(String[] args){ try{ LZMA2Options options = new LZMA2Options(); System.out.println("Successfully created LZMA2Options instance."); }catch(Exception e){ e.printStackTrace(); } } } ``` 以上示例展示了如何创建一个简单的测试案例用于验证基础功能是否正常运作。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值