为了构建 SDN 测试平台,我安装了 VirtualBox 来运行 Mininet 和 OpenDayLight 控制器。因此,为了安装和运行 OpenDayLight,我遵循了以下方法教程./karaf
。直到我尝试从 vm 终端内实际运行该命令时,才出现问题。
它向我显示了以下消息:
./karaf: 242: [: Illegal number:
OpenJDK 64-Bit Server VM warning: Option UnsyncloadClass was deprecated in
version 10.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize;
support was removed in 8.0
-Djava.endorsed.dirs=/usr/lib/jvm/default java/jre/lib/endorsed:/usr/lib/jvm/default
java/lib/endorsed:/home/odlc/distribution-karaf-0.4.0 Beryllium/lib/endorsed
is not supported. Endorsed standards and standalone APIs in modular
form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
如何解决这个问题?
答案1
我假设您在按照本教程操作时安装了 Ubuntu 18.04 Server。
如果是这样,我认为问题可能与安装的 Java 版本有关。在 18.04 中,该软件包default-jre-headless
安装了 OpenJDK 11。我尝试了这个,并收到了与您相同的错误。
它看起来确实适用于 OpenJDK 8,您应该能够按如下方式解决此问题:
删除 OpenJDK 11
sudo apt remove default-jre-headless
sudo apt autoremove
添加 Universe 软件存储库(OpenJDK 8 必需)
sudo add-apt-repository universe
安装 OpenJDK 8
sudo apt install openjdk-8-jre-headless
修改bashrc
打开文件~/.bashrc
并将之前添加的行修改为:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
重新运行修改后的文件source ~/.bashrc
,然后尝试再次运行 karaf。