在 LXC 容器中的 busybox 中安装 Java JDK - java/lang/NoClassDefFoundError: java/lang/Object

在 LXC 容器中的 busybox 中安装 Java JDK - java/lang/NoClassDefFoundError: java/lang/Object

在我正在开发的 Web 应用程序中,用户将能够上传 Java 代码,我需要编译并运行该代码。出于安全原因,我希望将其放在 LXC 容器内,并且出于占用空间的原因,我希望将其设置为 busybox。因此,我成功创建了一个 busybox 容器:

lxc-create -n my-box -t busybox

它启动并运行良好。然后,我从下载了 jdk-8u31-linux-i586.rpm这里和 ran rpm -i jdk-8u31-linux-i586.rpm,它没有返回任何输出,但创建了/usr/java/jdk1.8.0_31一切看起来都不错的结果。

但是,当我去/usr/java/jdk1.8.0_31/bin运行时./javac -version,我得到:

/usr/java/jdk1.8.0_31/bin # ./javac -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

我认为这可能是因为类路径或 java_home 设置不正确,所以,我创建了一个/etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_31
CLASSPATH=/usr/java/jdk1.8.0_31/lib
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export CLASSPATH
export PATH

这工作得很好,当我回显变量时,它们具有我设置的值。然而,问题仍然javac存在。java具有完全相同的输出。

我在这里错过了什么?

主机系统是Ubuntu Server 14.04。我也尝试过 x64 版本,结果相同。

答案1

事实证明,问题是一样的这里:我仍然需要从 java 安装中的 lib 和 jre/lib 文件夹中解压 *.pack 文件。unpack200,用于将 *.pack 文件解压为 .jar 文件的程序在 busybox 中不可用,但它是随 java 一起提供的。

相关内容