Spark开发中遇到的疑难杂症

常见问题

Java 17 运行 spark3.3.1 需要在vm中加入的参数

1
2
3
4
5
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
--add-exports java.base/sun.util.calendar=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.nio=ALL-UNNAMED
--add-opens java.base/java.lang.invoke=ALL-UNNAMED

问题1 模块访问受限

Exception in thread “main” java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x71a8adcf) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x71a8adcf

关于这个问题在 stackoverflow上的讨论

解决办法

在 IDEA 方法添加 VM 参数

1
--add-exports java.base/sun.nio.ch=ALL-UNNAMED

新版 IDEA 图示

20250311175853.png

20250311180046.png

20250311180138.png

20250311180312.png

问题2 系统缺少文件

Exception in thread “main” ExitCodeException exitCode=-1073741515:

参考这篇博客:https://blog.csdn.net/psp0001060/article/details/83057663

原因:

操作系统缺少 msvcr120.dll文件

下载地址

链接: https://pan.baidu.com/s/1rQSzzFn97hs7V0ZYoiF6ZQ?pwd=bdsa 提取码: bdsa 复制这段内容后打开百度网盘手机 App,操作更方便哦

放置 dll:

  • 32 位\msvcr120.dll 粘贴到 _C:\Windows\System32 目录中
  • 64 位\msvcr120.dll 粘贴到 _C:\Windows\SysWOW64 目录中

问题3 模块访问受限

Exception in thread “main” java.lang.IllegalAccessError: class org.apache.spark.sql.catalyst.util.DateTimeUtils$ (in unnamed module @0x17f62e33) cannot access class sun.util.calendar.ZoneInfo (in module java.base) because module java.base does not export sun.util.calendar to unnamed module @0x17f62e33

这个报错和问题 1 相似,vm 运行缺少 java.base/sun.util.calendar模块,需要手动指定

像以上的问题,都是因为模块没有导入的问题,需要手动指定

1
--add-exports java.base/sun.util.calendar=ALL-UNNAMED

确保程序运行时 vm 中有这个内容,idea 运行时添加可参考问题 1

问题4 模块访问受限

Exception in thread “main” java.lang.reflect.InaccessibleObjectException: Unable to make field protected transient int java.util.AbstractList.modCount accessible: module java.base does not “opens java.util” to unnamed module @783a467b

vm 参数加入

1
--add-opens java.base/java.util=ALL-UNNAMED

问题5

Exception in thread “main” java.lang.IllegalArgumentException: Unable to create serializer “com.esotericsoftware.kryo.serializers.FieldSerializer” for class: java.nio.HeapByteBuffer

。。。

问题6 模块访问受限

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field final byte[] java.nio.ByteBuffer.hb accessible: module java.base does not “opens java.nio” to unnamed module @6574a52c

vm参数加入

1
--add-opens java.base/java.nio=ALL-UNNAMED

问题7 模块访问受限

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private java.lang.Object java.lang.invoke.SerializedLambda.readResolve() throws java.io.ObjectStreamException accessible: module java.base does not “opens java.lang.invoke” to unnamed module @2cf3d63b

vm参数加入

1
--add-opens java.base/java.lang.invoke=ALL-UNNAMED
最后更新于 Mar 11, 2025 17:56 +0800
页面浏览量Loading
网站总访客数:Loading
网站总访问量:Loading
使用 Hugo 构建
主题 StackJimmy 设计
-->