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
相关产品推荐
相关产品推荐

