我本地装的 Data Integration 7.1,也叫 kettle,安装完后好久没用了,今天想打开做个测试,发现竟然打不开了。
从命令行报错日志来看,可能是缺少什么包,或者类库不兼容导致的错误。
2022/11/25 11:06:42 - Spoon - at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
java.lang.NullPointerException
at org.eclipse.swt.widgets.Control.internal_new_GC(Unknown Source)
at org.eclipse.swt.graphics.GC.<init>(Unknown Source)
at org.eclipse.swt.graphics.GC.<init>(Unknown Source)
at org.eclipse.swt.custom.CTabFolder.updateTabHeight(Unknown Source)
at org.eclipse.swt.custom.CTabFolder.runUpdate(Unknown Source)
at org.eclipse.swt.custom.CTabItem.getBounds(Unknown Source)
at org.eclipse.swt.custom.CTabFolder.onPaint(Unknown Source)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Control.drawWidget(Unknown Source)
at org.eclipse.swt.widgets.Widget.drawRect(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationNextEventMatchingMask(Unknown Source)
at org.eclipse.swt.widgets.Display.applicationProc(Unknown Source)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.nextEventMatchingMask(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1366)
at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:8022)
at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9277)
at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:692)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
2022/11/25 11:06:43 - Spoon - Spoon 已经结束.
stopping
因为最近这段时间电脑没做过特别的设置,只升级过系统和 JDK 版本,别的没动过,所以我怀疑是 JDK 的问题。我当前电脑的 JDK 版本如下:
$ ls -al /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x 6 root wheel 192 11 25 11:11 .
drwxr-xr-x 4 root wheel 128 10 28 16:43 ..
drwxr-xr-x 4 root wheel 128 6 13 15:35 adoptopenjdk-11.jdk
drwxr-xr-x 3 root wheel 96 4 21 2021 adoptopenjdk-8.jdk
drwxr-xr-x 3 root wheel 96 11 25 10:59 jdk1.8.0_321.jdk
通过手工设置环境变量尝试了 3 个版本都会导致同样的错误。于是从网上查了一下这个错误,发现有朋友说是因为 JDK 版本过高,应该用 jdk 1.8.0_242 以前的版本,于是我装了一个 202 版本
$ ls -al /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x 3 root wheel 96 11 25 11:11 jdk1.8.0_202.jdk
设置过环境变量以后,可以正常打开 kettle 7.1 了。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
总结一下,如果你也在 Mac 上遇到以上打开闪退的问题,可能是 JDK 版本不对,可以找个 JDK 1.8 的老版本(< 242)试试,希望能帮助到你。
本文从CSDN(点击查看原文)转载而来。不代表烟海拾贝立场,如若转载,请注明出处:https://somirror.com/3580.html