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

Pentaho 9.3执行转换遇javax.crypto.JceSecurity初始化失败求助

解决Pentaho 9.3中javax.crypto.JceSecurity初始化失败问题

问题核心分析

你遇到的java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.JceSecurity错误,并非加密策略文件缺失导致:

  • JDK 8u151及后续版本、JDK 11+已默认移除local_policy.jar和US_export_policy.jar,采用无限制加密策略,找不到这两个文件属于正常现象。
  • 从堆栈追踪的深层原因来看,真实触发点是Pentaho版本检查线程构建HttpClient时抛出java.net.MalformedURLException: Unknown protocol: http,进而导致JceSecurity类初始化失败。

解决方案

1. 禁用Pentaho版本检查(优先推荐)

  • 打开Pentaho安装目录下的data-integration/.kettle/kettle.properties文件,若不存在则手动创建。
  • 添加配置项:
    VERSION_CHECKER_ENABLED=N
    
  • 重启Spoon工具,重新执行转换任务。

2. 切换至Pentaho兼容的JDK版本

Pentaho 9.3官方推荐使用JDK 8或JDK 11,JDK 17/20存在兼容性风险:

  • 修改data-integration/spoon.bat(Windows)或spoon.sh(Linux)中的JAVA_HOME环境变量,指向官方推荐的JDK安装路径。
  • 确保系统PATH优先加载该JDK的bin目录。

3. 修复HttpClient协议配置(备选方案)

若禁用版本检查无效,可尝试修复HttpClient的协议识别问题:

  • 检查data-integration/lib目录下的Apache HttpClient相关jar包版本,确保与Pentaho 9.3兼容。
  • 替换为官方匹配版本的HttpClient jar包(操作前建议备份原文件)。

完整错误堆栈

2023/08/27 01:09:37 - Spoon - Running transformation using the Kettle execution engine
2023/08/27 01:09:37 - Spoon - Transformation opened.
2023/08/27 01:09:37 - Spoon - Launching transformation [Transf 01 Importa Dados 2005 para DS]...
2023/08/27 01:09:37 - Spoon - Started the transformation execution.
2023/08/27 01:09:37 - Transf 01 Importa Dados 2005 para DS - Dispatching started for transformation [Transf 01 Importa Dados 2005 para DS]
2023/08/27 01:09:37 - Table output.0 - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : Error initializing step [Table output]
2023/08/27 01:09:37 - Table output.0 - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.JceSecurity
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.crypto.SecretKeyFactory.nextSpi(SecretKeyFactory.java:299)
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:117)
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:164)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.shaded.com.ongres.scram.common.ScramMechanisms.saltedPassword(ScramMechanisms.java:155)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.shaded.com.ongres.scram.common.ScramFunctions.saltedPassword(ScramFunctions.java:59)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.shaded.com.ongres.scram.client.ScramSession$ClientFinalProcessor.<init>(ScramSession.java:196)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.shaded.com.ongres.scram.client.ScramSession$ClientFinalProcessor.<init>(ScramSession.java:163)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.shaded.com.ongres.scram.client.ScramSession$ServerFirstProcessor.clientFinalProcessor(ScramSession.java:130)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.jre7.sasl.ScramAuthenticator.processServerFirstMessage(ScramAuthenticator.java:147)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:778)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:161)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:223)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.Driver.makeConnection(Driver.java:465)
2023/08/27 01:09:37 - Table output.0 -  at org.postgresql.Driver.connect(Driver.java:264)
2023/08/27 01:09:37 - Table output.0 -  at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683)
2023/08/27 01:09:37 - Table output.0 -  at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:191)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:589)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.core.database.Database.normalConnect(Database.java:481)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.core.database.Database.connect(Database.java:389)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.core.database.Database.connect(Database.java:360)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.trans.steps.tableoutput.TableOutput.init(TableOutput.java:533)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.trans.step.StepInitThread.run(StepInitThread.java:69)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.lang.Thread.run(Thread.java:1623)
2023/08/27 01:09:37 - Table output.0 - Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.RuntimeException: java.net.MalformedURLException: Unknown protocol: http [in thread "Thread-10"]
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.crypto.JceSecurity.<clinit>(JceSecurity.java:249)
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.crypto.Cipher.getInstance(Cipher.java:549)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.SSLCipher.isTransformationAvailable(SSLCipher.java:477)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.SSLCipher.<init>(SSLCipher.java:466)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.SSLCipher.<clinit>(SSLCipher.java:90)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:65)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.SSLContextImpl.getApplicableSupportedCipherSuites(SSLContextImpl.java:337)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>(SSLContextImpl.java:550)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.lang.Class.forName0(Native Method)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.lang.Class.forName(Class.java:391)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.lang.Class.forName(Class.java:382)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.security.Provider$Service.getImplClass(Provider.java:1988)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.security.Provider$Service.getDefaultConstructor(Provider.java:2019)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.security.Provider$Service.newInstanceOf(Provider.java:1933)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.security.Provider$Service.newInstanceUtil(Provider.java:1941)
2023/08/27 01:09:37 - Table output.0 -  at java.base/java.security.Provider$Service.newInstance(Provider.java:1916)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
2023/08/27 01:09:37 - Table output.0 -  at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
2023/08/27 01:09:37 - Table output.0 -  at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:185)
2023/08/27 01:09:37 - Table output.0 -  at org.apache.http.ssl.SSLContexts.createDefault(SSLContexts.java:51)
2023/08/27 01:09:37 - Table output.0 -  at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:977)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.versionchecker.VersionChecker.buildHttpClient(VersionChecker.java:413)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.versionchecker.VersionChecker.performCheck(VersionChecker.java:367)
2023/08/27 01:09:37 - Table output.0 -  at org.pentaho.di.core.lifecycle.pdi.VersionCheckerListener$1.run(VersionCheckerListener.java:88)
2023/08/27 01:09:37 - Table output.0 -  ... 1 more
2023/08/27 01:09:37 - Transf 01 Importa Dados 2005 para DS - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : Step [Table output.0] failed to initialize!
2023/08/27 01:09:37 - Spoon - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : Transf 01 Importa Dados 2005 para DS: preparing transformation execution failed
2023/08/27 01:09:37 - Spoon - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : org.pentaho.di.core.exception.KettleException: 
2023/08/27 01:09:37 - Spoon - We failed to initialize at least one step.  Execution can not begin!
2023/08/27 01:09:37 - Spoon - 
2023/08/27 01:09:37 - Spoon - 
2023/08/27 01:09:37 - Spoon -   at org.pentaho.di.trans.Trans.prepareExecution(Trans.java:1295)
2023/08/27 01:09:37 - Spoon -   at org.pentaho.di.ui.spoon.trans.TransGraph$30.run(TransGraph.java:4281)
2023/08/27 01:09:37 - Spoon -   at java.base/java.lang.Thread.run(Thread.java:1623)

内容的提问来源于stack exchange,提问作者Akari Oozora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:27:31