部署的报错:Failed to instantiate [org.pentaho.di.repository.filerep.KettleFileRepository]: Factory method 'kettleFileRepository'

在开发环境部署的好好的,到生产环境就报错:
2023-12-21 17:04:25,389 WARN ConfigServletWebServerApplicationContext: 590 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘kettleFileRepository’ defined in class path resource [io/dataease/config/CommonConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.pentaho.di.repository.filerep.KettleFileRepository]: Factory method ‘kettleFileRepository’ threw exception; nested exception is org.pentaho.di.core.exception.KettleException:
java.lang.ExceptionInInitializerError
at org.springframework.boot.loader.JarLauncher.main (JarLauncher.java:88)
at org.springframework.boot.loader.Launcher.launch (Launcher.java:58)
at org.springframework.boot.loader.Launcher.launch (Launcher.java:107)
at org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java:49)
at java.lang.reflect.Method.invoke (Method.java:566)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
at io.dataease.Application.main (Application.java:24)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:1300)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:1311)
at org.springframework.boot.SpringApplication.run (SpringApplication.java:326)
at org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:426)
at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:759)
at org.springframework.boot.SpringApplication.refresh (SpringApplication.java:767)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:144)
at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:582)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:917)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:944)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0 (AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:564)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1334)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:486)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver.java:653)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:154)
at java.lang.reflect.Method.invoke (Method.java:566)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
at io.dataease.config.CommonConfig$$EnhancerBySpringCGLIB$$55c4f53e.kettleFileRepository (:-1)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept (ConfigurationClassEnhancer.java:331)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper (MethodProxy.java:244)
at io.dataease.config.CommonConfig$$EnhancerBySpringCGLIB$$55c4f53e$$FastClassBySpringCGLIB$$5257d380.invoke (:-1)
at io.dataease.config.CommonConfig$$EnhancerBySpringCGLIB$$55c4f53e.CGLIB$kettleFileRepository$0 (:-1)
at io.dataease.config.CommonConfig.kettleFileRepository (CommonConfig.java:27)
at org.pentaho.di.core.KettleEnvironment.init (KettleEnvironment.java:82)
at org.pentaho.di.core.KettleEnvironment.init (KettleEnvironment.java:101)
at org.pentaho.di.core.KettleEnvironment.init (KettleEnvironment.java:134)
at org.pentaho.di.core.KettleClientEnvironment.init (KettleClientEnvironment.java:80)
at org.pentaho.di.core.KettleClientEnvironment.init (KettleClientEnvironment.java:117)
at org.pentaho.di.core.plugins.PluginRegistry.init (PluginRegistry.java:545)
at org.pentaho.di.core.plugins.PluginRegistry.init (PluginRegistry.java:560)
at org.pentaho.di.core.plugins.PluginRegistry.registerType (PluginRegistry.java:605)
at org.pentaho.di.core.plugins.BasePluginType.searchPlugins (BasePluginType.java:185)
at org.pentaho.di.core.plugins.BasePluginType.registerPluginJars (BasePluginType.java:706)
at org.pentaho.di.core.plugins.BasePluginType.findAnnotatedClassFiles (BasePluginType.java:399)
at org.pentaho.di.core.plugins.JarFileCache.getFileObjects (JarFileCache.java:66)
at org.pentaho.di.core.plugins.PluginFolder.findJarFiles (PluginFolder.java:117)
at org.pentaho.di.core.plugins.PluginFolder.findJarFiles (PluginFolder.java:125)

这个错误信息看起来是在初始化KettleFileRepository时抛出的异常。下面是一些可能导致这个问题的原因,可以参考排查看看:

  1. 环境问题
  • 确保在生产环境中存在所需的依赖项和配置。检查是否有任何库或配置文件缺失。
  • 确保在生产环境中使用的 Java 版本与开发环境相同,包括补丁级别。
  1. 文件系统权限
  • 检查 Kettle 需要的文件系统目录是否存在,并确保应用程序有足够的权限来访问这些目录。特别是,确保有权限读取和写入转换和作业文件。
  1. 库依赖问题
  • 确保在生产环境中存在所需的 Kettle 库文件。可能有些库在生产环境中缺失或版本不匹配。
  1. 配置问题
  • 检查在生产环境中是否存在正确的配置文件。确保配置文件中的路径和参数正确,尤其是与文件存储库相关的配置。
  1. JVM 参数和环境变量
  • 确保在生产环境中正确设置了JVM 参数和环境变量。这可能包括设置 KETTLE_HOME 或其他与 Kettle 相关的环境变量。
  1. Kettle 版本问题
  • 确保在生产环境中使用的 Kettle 版本与开发环境中使用的版本相同。不同的 Kettle 版本可能具有不同的特性和配置。
2 个赞

我是用engine_mode = simple,来运行的,也会涉及使用kettle?我就没有安装kettle。
但是开发环境里也是同样的模式,就没这问题。

按道理是不会的,这个报错影响到程序启动吗,另外可以 docker ps 后截图看看。

源码前后端部署还是打包成镜像部署的。你参考的是那个文档?

源码前后端分离部署的。后端用jenkins打包,部署到k8s里。用的apollo配置中心。关键是engine_mode = simple。在本地和开发环境都好的,上了生产环境就报那错。我只好把CommonConfig.java里的那个bean注释掉了,也能跑起来。就是不知道为啥会这样。