Data Integration (kettle)挑 JDK 版本

我本地装的 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

(0)
上一篇 2023-01-06 05:00
下一篇 2023-01-06 07:22

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注