Instalando o Java JDK no busybox em um contêiner LXC - java / lang / NoClassDefFoundError: java / lang / Object

1

Em um aplicativo da web que estou desenvolvendo, os usuários poderão fazer o upload de código java e eu precisarei compilar e executar isso. Por razões de segurança, gostaria de fazê-lo dentro de um contêiner LXC e, por motivos de pegada, gostaria que fosse um busybox. Então, criei um contêiner do busybox com sucesso com:

lxc-create -n my-box -t busybox

Está tudo funcionando bem. Então, eu baixei o jdk-8u31-linux-i586.rpm de aqui e executou rpm -i jdk-8u31-linux-i586.rpm , que não retornou nenhum resultado, mas criou /usr/java/jdk1.8.0_31 , o que parece bom.

No entanto, quando vou para /usr/java/jdk1.8.0_31/bin e execuo ./javac -version , obtenho:

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

Eu percebi que isso pode ser porque o classpath ou o java_home não são a configuração correta, então criei um /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

Isso funciona bem, quando faço eco das variáveis, eles têm os valores que defini para eles. No entanto, o problema com javac persiste. java tem exatamente o mesmo resultado.

O que eu senti falta aqui?

O sistema host é o Ubuntu Server 14.04. Eu tentei também a versão x64, com o mesmo resultado.

    
por Keelan 19.02.2015 / 00:10

1 resposta

1

Como se constata, o problema era o mesmo que aqui : eu ainda tinha que descompactar os arquivos * .pack das pastas lib e jre / lib na instalação do java. unpack200 , o programa usado para descompactar arquivos * .pack em arquivos .jar não está disponível no busybox, mas é fornecido com o java.

    
por 19.02.2015 / 07:32