You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 23ai Free中加载SLF4J-API与Password4j时出现NoClassDefFoundError问题求助

Oracle 23ai Free中加载SLF4J-API与Password4j时出现NoClassDefFoundError问题求助

大家好,我最近在Oracle 23ai Free环境里折腾Password4j库时遇到了棘手的问题,想过来请教下各位大佬的经验。

问题现象

我尝试把SLF4J-API和Password4j(1.8.2/1.8.3版本)加载到Oracle 23ai Free数据库中,但是当运行Password4j里的Argon2实现时,总是抛出ORA-29532: Java调用被未捕获的Java异常终止,具体异常是java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory——明明我已经加载了SLF4J-API的jar包了。

更奇怪的是,同样的操作在Oracle 19c里用-v -thin -user这些参数执行loadjava命令就能正常工作,完全没有问题。我甚至升级到了Password4j 1.8.3版本,结果还是一样的报错,实在没辙了。

复现步骤

以下是我shell脚本里用到的几种loadjava命令尝试(分别加载SLF4J-API和Password4j的jar包):

# 第一种尝试
loadjava -r -v -f -s -g "$SCHEMA_NAME" -resolve -user "$SCHEMA_NAME/$SCHEMA_PASSWORD@$CONTAINER_NAME" "$jar_file"

# 第二种尝试
loadjava -r -v -f -s -g "$SCHEMA_NAME" -append-resolver "((* -))" -jarsasdbobjects -user "$SCHEMA_NAME/$SCHEMA_PASSWORD@$CONTAINER_NAME" "$jar_file"

# 第三种尝试(19c下可用的参数)
loadjava -v -thin -user "$SCHEMA_NAME/$SCHEMA_PASSWORD@$CONTAINER_NAME" "$jar_file"

不管用哪种命令加载,只要运行Argon2的相关代码,大概率都会触发上面提到的NoClassDefFoundError异常。

预期行为

我原本以为在成功加载SLF4J-API和Password4j之后,就能在项目里正常使用这个库的功能了。

环境信息

  • 操作系统:Docker中的Oracle Linux 8
  • 数据库:Oracle 23ai Free
  • JDK版本:
    • 数据库内置:执行SELECT dbms_java.get_ojvm_property(PROPSTRING=>'java.version') FROM dual 结果为11.0.27
    • 本地环境:OpenJDK 17.0.15 LTS(Red_Hat-17.0.15.0.6-2.0.1)

额外上下文

我注意到一个细节:加载后的SLF4J类路径有点奇怪,显示的是org.slf4j///org/slf4j/...格式,而不是预期的org/slf4j/...(比如org.slf4j///org/slf4j/loggerfactory和org/slf4j/LoggerFactory)。

这是我手动加载SLF4J-API时的输出日志:

arguments: '-user' 'SEMA@FREEPDB1' '-verbose' '-resolve' 'slf4j-api-2.0.17.jar'
creating : jar slf4j-api-2.0.17.jar (module org.slf4j)
loading : jar slf4j-api-2.0.17.jar
creating : resource META-INF/MANIFEST.MF (module org.slf4j)
loading : resource META-INF/MANIFEST.MF
creating : resource META-INF/LICENSE.txt (module org.slf4j)
loading : resource META-INF/LICENSE.txt
creating : class org/slf4j/ILoggerFactory (module org.slf4j)
loading : class org/slf4j/ILoggerFactory
creating : class org/slf4j/IMarkerFactory (module org.slf4j)
loading : class org/slf4j/IMarkerFactory
creating : class org/slf4j/Logger (module org.slf4j)
loading : class org/slf4j/Logger
creating : class org/slf4j/LoggerFactory (module org.slf4j)
loading : class org/slf4j/LoggerFactory
creating : class org/slf4j/LoggerFactoryFriend (module org.slf4j)
loading : class org/slf4j/LoggerFactoryFriend
creating : class org/slf4j/MDC$1 (module org.slf4j)
loading : class org/slf4j/MDC$1
creating : class org/slf4j/MDC$MDCCloseable (module org.slf4j)
loading : class org/slf4j/MDC$MDCCloseable
creating : class org/slf4j/MDC (module org.slf4j)
loading : class org/slf4j/MDC
creating : class org/slf4j/Marker (module org.slf4j)
loading : class org/slf4j/Marker
creating : class org/slf4j/MarkerFactory (module org.slf4j)
loading : class org/slf4j/MarkerFactory
creating : class org/slf4j/event/DefaultLoggingEvent (module org.slf4j)
loading : class org/slf4j/event/DefaultLoggingEvent
creating : class org/slf4j/event/EventConstants (module org.slf4j)
loading : class org/slf4j/event/EventConstants
creating : class org/slf4j/event/EventRecordingLogger (module org.slf4j)
loading : class org/slf4j/event/EventRecordingLogger
creating : class org/slf4j/event/KeyValuePair (module org.slf4j)
loading : class org/slf4j/event/KeyValuePair
creating : class org/slf4j/event/Level (module org.slf4j)
loading : class org/slf4j/event/Level
creating : class org/slf4j/event/LoggingEvent (module org.slf4j)
loading : class org/slf4j/event/LoggingEvent
creating : class org/slf4j/event/SubstituteLoggingEvent (module org.slf4j)
loading : class org/slf4j/event/SubstituteLoggingEvent
creating : class org/slf4j/helpers/AbstractLogger (module org.slf4j)
loading : class org/slf4j/helpers/AbstractLogger
creating : class org/slf4j/helpers/BasicMDCAdapter$1 (module org.slf4j)
loading : class org/slf4j/helpers/BasicMDCAdapter$1
creating : class org/slf4j/helpers/BasicMDCAdapter (module org.slf4j)
loading : class org/slf4j/helpers/BasicMDCAdapter
creating : class org/slf4j/helpers/BasicMarker (module org.slf4j)
loading : class org/slf4j/helpers/BasicMarker
creating : class org/slf4j/helpers/BasicMarkerFactory (module org.slf4j)
loading : class org/slf4j/helpers/BasicMarkerFactory
creating : class org/slf4j/helpers/CheckReturnValue (module org.slf4j)
loading : class org/slf4j/helpers/CheckReturnValue
creating : class org/slf4j/helpers/FormattingTuple (module org.slf4j)
loading : class org/slf4j/helpers/FormattingTuple
creating : class org/slf4j/helpers/LegacyAbstractLogger (module org.slf4j)
loading : class org/slf4j/helpers/LegacyAbstractLogger

有没有可能是我加载jar包的方式不对?或者Oracle 23ai Free在类加载机制上有什么和19c不一样的地方?麻烦大家帮忙看看,谢谢啦!


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 07:49:31