Ubuntu 20.04下Windriver Workbench报java.lang.UnsatisfiedLinkError错误求助
问题:Windriver Workbench选择工作区后报java.lang.UnsatisfiedLinkError错误
背景
通过scp从另一台服务器复制Windriver目录到本地Linux服务器,该操作在其他服务器可正常运行。启动Windriver Workbench后GUI能显示,但选择工作区目录后报错,提示查看日志。
系统信息
Linux Itzhak-r-ubuntu 5.15.0-92-generic #102~20.04.1-Ubuntu SMP Mon Jan 15 13:09:14 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
日志报错内容
!SESSION 2024-02-01 14:29:33.257 ----------------------------------------------- eclipse.buildId=M20130131-0800/WB20140715-0750 java.version=1.6.0_21 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_IL Command-line arguments: -os linux -ws gtk -arch x86 !ENTRY org.eclipse.osgi 4 0 2024-02-01 14:29:40.170 !MESSAGE Application error !STACK 1 java.lang.UnsatisfiedLinkError: com.windriver.core.runtime.jni.Env.setEnv(Ljava/lang/String;Ljava/lang/String;)I at com.windriver.core.runtime.jni.Env.setEnv(Native Method) at com.windriver.ide.common.core.installregistry.WREnv.setSystemEnv(WREnv.java:805) at com.windriver.ide.common.core.installregistry.WRInstallRegistry.initWorkbenchEnvironment(WRInstallRegistry.java:631) at com.windriver.ide.common.core.installregistry.WRInstallRegistry.init(WRInstallRegistry.java:484) at com.windriver.ide.common.core.installregistry.WRInstallRegistry.getInstance(WRInstallRegistry.java:550) at com.windriver.ide.application.UnifiedSWTSwingApplication.checkPreconditions(UnifiedSWTSwingApplication.java:148) at com.windriver.ide.application.CopyOfIDEApplication.start(CopyOfIDEApplication.java:136) at com.windriver.ide.application.UnifiedSWTSwingApplication.access$2(UnifiedSWTSwingApplication.java:1) at com.windriver.ide.application.UnifiedSWTSwingApplication.start(UnifiedSWTSwingApplication.java:70) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414) at org.eclipse.equinox.launcher.WRWBMain.main(WRWBMain.java:37)
本地Java版本
openjdk version "1.8.0_392" OpenJDK Runtime Environment (build 1.8.0_392-8u392-ga-1~20.04-b08) OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)
之前的问题及处理
曾遇到共享对象缺失问题,报错如下:
no swt-pi-gtk in java.library.path /root/.swt/lib/linux/x86/libswt-pi-gtk-3836.so: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory Can't load library: /root/.swt/lib/linux/x86/libswt-pi-gtk.so
安装相关库后GUI可正常启动。
已尝试操作
安装Windriver官网提及的依赖库:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \ xz-utils debianutils iputils-ping libsdl1.2-dev xterm
解决方案
针对java.lang.UnsatisfiedLinkError错误,可按以下步骤排查修复:
1. 匹配Java版本
从日志可见,Windriver Workbench实际调用的是Java 1.6.0_21,但本地系统默认是OpenJDK 1.8.0_392。老版本Windriver对Java版本兼容性要求严格,需强制Workbench使用对应版本:
- 下载Oracle JDK 1.6.0_21并解压到本地目录(如
/opt/jdk1.6.0_21) - 修改Windriver启动脚本(如
wrwb),在开头添加环境变量配置:export JAVA_HOME=/opt/jdk1.6.0_21 export PATH=$JAVA_HOME/bin:$PATH
2. 补全32位系统依赖
日志中BootLoader显示ARCH=x86,说明Workbench是32位程序,需安装32位基础库:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libxtst6:i386
3. 修复目录权限
复制的Windriver目录可能存在权限缺失,执行以下命令修复:
sudo chmod -R 755 /path/to/windriver sudo chown -R $USER:$USER /path/to/windriver
4. 重置工作区配置
若上述步骤无效,可尝试重置工作区:
- 删除原工作区目录下的
.metadata文件夹 - 重新启动Workbench并选择该工作区
内容的提问来源于stack exchange,提问作者Itzik Rahamim
相关产品推荐
相关产品推荐

