Java程序中使用kettle并集成其OSGI插件

我按照pentaho官网说明
Embed Pentaho Data Integration - Hitachi Vantara Lumada and Pentaho Documentation

img


结果一直报OSGI相关的错误,求专业人士指点

15:46:13,907 INFO  [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled
15:46:20,131 INFO  [KarafInstance] 
*******************************************************************************
*** Karaf Instance Number: 1 at D:\apache-tomcat-8.5.38\bin\system\karaf\ca ***
***   ches\kettletool\data-1                                                ***
*** Karaf Port:8802                                                         ***
*** OSGI Service Port:9051                                                  ***
*******************************************************************************
二月 21, 2023 3:46:20 下午 org.apache.karaf.main.Main$KarafLockCallback lockAcquired
信息: Lock acquired. Setting startlevel to 100
org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=pentaho-osgi-utils; type=karaf.feature; version=0; filter:="(&(osgi.identity=pentaho-osgi-utils)(type=karaf.feature)(version>=0.0.0))" [caused by: Unable to resolve pentaho-osgi-utils/9.0.0.0-423: missing requirement [pentaho-osgi-utils/9.0.0.0-423] osgi.identity; osgi.identity=pentaho-osgi-utils-impl; type=osgi.bundle; version="[9.0.0.0-423,9.0.0.0-423]"; resolution:=mandatory [caused by: Unable to resolve pentaho-osgi-utils-impl/9.0.0.0-423: missing requirement [pentaho-osgi-utils-impl/9.0.0.0-423] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.pentaho.capabilities.api)(version>=9.0.0)(!(version>=10.0.0)))"]]
    at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
    at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:392)
    at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:378)
    at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:332)
    at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257)
    at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:393)
    at org.apache.karaf.features.internal.service.Deployer.handlePrerequisites(Deployer.java:1116)
    at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:388)
    at org.apache.karaf.features.internal.service.Deployer.handlePrerequisites(Deployer.java:1116)
    at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:388)
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062)
    at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve pentaho-osgi-utils/9.0.0.0-423: missing requirement [pentaho-osgi-utils/9.0.0.0-423] osgi.identity; osgi.identity=pentaho-osgi-utils-impl; type=osgi.bundle; version="[9.0.0.0-423,9.0.0.0-423]"; resolution:=mandatory [caused by: Unable to resolve pentaho-osgi-utils-impl/9.0.0.0-423: missing requirement [pentaho-osgi-utils-impl/9.0.0.0-423] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.pentaho.capabilities.api)(version>=9.0.0)(!(version>=10.0.0)))"]
    at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
    ... 16 more
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve pentaho-osgi-utils-impl/9.0.0.0-423: missing requirement [pentaho-osgi-utils-impl/9.0.0.0-423] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.pentaho.capabilities.api)(version>=9.0.0)(!(version>=10.0.0)))"
    at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343)
    ... 17 more
15:48:02,710 ERROR [KarafLifecycleListener] The Kettle Karaf Lifecycle Listener failed to execute properly after waiting for 100 seconds. Releasing lifecycle hold, but some services may be unavailable.

这个错误信息表明Kettle在运行时无法解析依赖项,导致插件无法加载。具体地,插件需要使用名为"pentaho-osgi-utils-impl"的OSGi捆绑包,但找不到符合要求的版本。

要解决这个问题,您可以尝试以下步骤:

确认使用的Kettle版本与使用的其他Pentaho产品的版本匹配。如果版本不匹配,则可能会发生这种类型的错误。

检查您的插件是否正确安装。如果使用了自定义插件,则可能需要手动安装它。

检查您的OSGi运行时环境是否正确设置。可以确保所有必需的包和库都已添加到类路径中。

检查您的OSGi配置文件是否正确。特别是,可能需要在配置文件中指定必需的捆绑包和软件包。

如果仍然无法解决这个问题,建议咨询Kettle和OSGi社区的专家