我刚刚完成了 Ubuntu 16.04 LTS 的全新安装。我从官方存储库安装了 Scilab,非常简单sudo apt-get install scilab
。
然后我尝试从 GUI 启动它,但它没有启动。scilab
从终端运行会给出以下输出:
$ scilab
Could not access to the Main Scilab Class:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.scilab.modules.localization.Messages.gettext(Unknown Source)
at org.scilab.modules.commons.xml.XConfiguration.<clinit>(Unknown Source)
at org.scilab.modules.core.Scilab.<clinit>(Unknown Source)
Caused by: java.lang.NullPointerException
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1847)
at java.lang.Runtime.loadLibrary0(Runtime.java:871)
at java.lang.System.loadLibrary(System.java:1124)
at org.scilab.modules.localization.MessagesJNI.<clinit>(Unknown Source)
... 3 more
Scilab cannot create Scilab Java Main-Class (we have not been able to find the main Scilab class. Check if the Scilab and thirdparty packages are available).
因此它在 Java 和 OpenJDK 方面存在问题。我的系统中只有一个 Java:
$ update-java-alternatives -l
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
我该如何解决 Scilab 启动问题?
答案1
更新2020-04-29:
下面的修复不再需要,我们可以使用最新更新中的 Java 和 Scilab。
我已经举报错误 1863726 到 Launchpad首先介绍一下这次坠机事件。
然后我安装了 Ubuntu 16.04.0 LTS,但没有在其中安装任何更新。Scilab 在这样的系统上运行正常。
所以我决定将 OpenJDK 软件包冻结/固定/锁定到之前的 232 版本从启动板。
警告:如果您真的担心安全,请不要运行以下命令。
cd ~/Downloads
wget https://launchpadlibrarian.net/446930389/openjdk-8-jre_8u232-b09-0ubuntu1~16.04.1_amd64.deb
wget https://launchpadlibrarian.net/446930388/openjdk-8-jre-headless_8u232-b09-0ubuntu1~16.04.1_amd64.deb
sudo apt-get install ./openjdk-8-jre_8u232-b09-0ubuntu1~16.04.1_amd64.deb ./openjdk-8-jre-headless_8u232-b09-0ubuntu1~16.04.1_amd64.deb
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-java-scilab
Package: openjdk-8-jre:amd64
Pin: version 8u232-b09-0ubuntu1~16.04.1
Pin-Priority: 1337
Package: openjdk-8-jre-headless:amd64
Pin: version 8u232-b09-0ubuntu1~16.04.1
Pin-Priority: 1337
EOF
现在我可以像以前一样运行 Scilab 5.5.2。