背景:
最近需要用到kettle,于是下载了最新版本8.2,结果发现Big Data中插件不全,只有四个。以为kettle被日立收购后,只有收费的企业版才有完整的大数据插件,免费版只有四个。于是网上找big-data-plugin,但编译错误很多,然后去群里求助。但其他人的都是完整的,以为是安装包的问题,于是找他们要了安装包,发现还是不行。
在同事电脑上运行也正常,就我的不行。
排查过程:
去包的目录下的logs/目录下发现有两个日志文件,只有spoon.log有内容,打开后发现很多错误,于是根据错误内容找到解决办法。
参考一:
https://jira.pentaho.com/browse/PDI-16887
Hey Ravi,
This appears to be an error in your configuration, not a defect in the product. The exception says "Error parsing system bundle export statement" and ends with "Exported package names cannot be zero length.)". It then tells you what i found which includes this:
...snip... org.apache.karaf.version;version="3.0.3", ,org.pentaho.di.trans.steps.userdefinedjavaclass,...snip...
Note the , , in there.
If you look at the file data-integration/system/karaf/config.properties, the packages list looks like this:
org.osgi.framework.system.packages= \
org.osgi.framework.startlevel;uses:="org.osgi.framework";version="1.0", \
org.osgi.framework.wiring;uses:="org.osgi.framework";version="1.1", \
org.osgi.framework.hooks.bundle;uses:="org.osgi.framework";version="1.1", \
org.osgi.framework.hooks.service;uses:="org.osgi.framework";version="1.1", \
org.osgi.framework.hooks.resolver;uses:="org.osgi.framework.wiring";version="1.0", \
org.osgi.framework.launch;uses:="org.osgi.framework";version="1.1", \
org.osgi.framework.namespace;uses:="org.osgi.resource";version="1.0", \
org.osgi.framework;version="1.7", \
org.osgi.framework.hooks.weaving;uses:="org.osgi.framework.wiring";version="1.0",\
org.osgi.resource;version="1.0",org.osgi.service.url;version="1.0",\
org.osgi.service.startlevel;uses:="org.osgi.framework";version="1.1",\
org.osgi.service.packageadmin;uses:="org.osgi.framework";version="1.2",\
org.osgi.service.url;version="1.0", \
org.osgi.util.tracker;uses:="org.osgi.framework";version="1.5.1", \
org.apache.karaf.jaas.boot;version="3.0.3", \
org.apache.karaf.jaas.boot.principal;version="3.0.3", \
org.apache.karaf.management.boot;version="3.0.3", \
org.apache.karaf.version;version="3.0.3", \
${jre-${java.specification.version}}
So in your environment, ${jre-${java.specification.version}} seems to be returning an empty string. Please visit http://forums.pentaho.com and ask for assistance in getting your environment properly configured.
Closing this case as "Not a Bug" - this is an environmental issue.
I came across the same error and found the solution with the help of community.hds.com forum. Java 10 was installed on my Mac which is not supported by PDI.
In my case I had to:
brew cask uninstall java
brew tap caskroom/versions
brew cask install java8
参考二:
https://community.hitachivantara.com/message/38623-re-pdi-80-start-up-error
PDI 8.0 start up error
When I start PDI on Mac HighSierra from the console I get an error message:
"org.osgi.framework.BundleException: Exported package names cannot be zero length."
A detailed log can be found on this Jira ticket: [PDI-16887] PDI Start up error - Pentaho Platform Tracking from somebody else who had the same issue. The ticket was closed stating "in your environment, ${jre-${java.specification.version}} seems to be returning an empty string. Please visit http://forums.pentaho.com and ask for assistance in getting your environment properly configured."
Somebody has an idea how to fix this?
I have pdi 8.0, Java 10 SDK, MacOS HighSierra
正确答案
Java 10? PDI doesn't even support Java9 yet.
Try installing java8, open a terminal, set JAVA_HOME correctly, and then run spoon.sh and it'll work fine.
问题原因:
本机安装了java10,而kettle最高支持java8.
解决方法:
将环境变量的JAVA_HOME改为1.8版本即可