Pentaho无法启动求助:启动时出现SWT类缺失错误
Pentaho启动报错:java.lang.NoClassDefFoundError 解决方法
错误日志
"C:\Program Files (x86)\Java\jre1.8.0_361\bin\java.exe" "-Xms1024m" "-Xmx2048m" "-Djava.library.path=libswt\win32;/bin" "-Djava.endorsed.dirs=C:\Program Files (x86)\Java\jre1.8.0_361\jre\lib\endorsed;C:\Program Files (x86)\Java\jre1.8.0_361\lib\endorsed;C:\Users\valem\Downloads\pdi-ce-9.3.0.0-428 (2)\data-integration\system\karaf\lib\endorsed" "-DKETTLE_HOME=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" "-DKETTLE_JNDI_ROOT=" -jar launcher\launcher.jar -lib ..\libswt\win32 /level:Debug Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Control at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at org.pentaho.commons.launcher.Launcher.main(Launcher.java:91) Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Control at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 6 more
错误原因
JVM无法加载SWT库中的org.eclipse.swt.widgets.Control类,SWT是Pentaho图形界面依赖的核心组件,问题源于SWT库缺失、路径配置错误或Java版本/位数不匹配。
解决步骤
检查SWT库完整性
打开Pentaho安装目录下的libswt/win32文件夹,确认存在完整的SWT相关jar包(如swt.jar、swt-win32-*.jar)。若文件缺失,重新下载对应版本的Pentaho安装包,解压后替换该文件夹。修正路径配置
启动命令中-Djava.library.path参数混用了Windows和Unix分隔符,Windows下需用分号;分隔路径。修改Pentaho根目录的Spoon.bat文件,将该行参数改为-Djava.library.path=libswt\win32;.\bin(或使用完整绝对路径)。验证Java版本与位数
Pentaho 9.3要求Java 8,当前使用的jre1.8.0_361版本符合要求,但需确保Java位数与Pentaho安装包一致:若系统是64位Windows,需使用64位Java 8和64位Pentaho安装包,避免32/64位不匹配导致SWT加载失败。清理缓存并重启
删除用户目录下的C:\Users\你的用户名\.pentaho缓存文件夹,然后以管理员身份运行Spoon.bat重启Pentaho。
内容的提问来源于stack exchange,提问作者Vanessa Lemos
相关产品推荐
相关产品推荐

