open("$ORIGIN/../lib/i386/jli/tls/i686/sse2/cmov/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
O executável que você está executando procura por bibliotecas em um rpath , além do caminho de pesquisa normal da biblioteca. O caminho aqui é $ORIGIN/../lib/i386/jli:$ORIGIN/../jre/lib/i386/jli . Normalmente, $ORIGIN deve ser substituído pela localização do executável, aqui /usr/lib/jvm/java-6-openjdk/jre/bin .
Aqui, $ORIGIN não está sendo substituído. O recurso está desativado em executáveis executando com privilégios extras (setuid, setgid ou setpcap), porque senão você poderá injetar uma biblioteca diferente e, portanto, executar código arbitrário com privilégios elevados. (Veja este artigo para uma explicação mais detalhada.) A questão da segurança foi descoberta há relativamente pouco tempo; no Debian foi corrigido em DSA-2122-1 , então antes de você atualizar para libc6-2.7-18lenny6 , seu executável java presumivelmente teria funcionado.
O sintoma indica que java está sendo executado com privilégios adicionais. Este não é o caso em uma instalação Debian normal. Certifique-se de que /usr/lib/jvm/java-6-openjdk/jre/bin/java seja o modo 755 e não tenha recursos ( getcap /usr/lib/jvm/java-6-openjdk/jre/bin/java e setcap -r … para remover os recursos, se houver).
(Resposta original, que pode ser útil se você achar que java funciona como root, mas não como outros usuários, e acontece que você está invocando binários diferentes.)
Minha aposta é que você tenha outros java versão anterior em seu PATH ( sudo altera o PATH ). Verifique o que o type java diz - provavelmente é uma versão de Java diferente para a qual ldd /path/to/bin/java reporta libjli.so => not found .
E especulo que a razão pela qual essa versão do Java não pode encontrar libjli.so é que ela está procurando por um rpath (caminho de pesquisa de biblioteca armazenado no executável) que não corresponde à maneira como é instalado. Se você tiver o java binário em /some/where/bin/java e ele tiver um rpath relativo (que é o caminho do Sun JDK e OpenJDK), a biblioteca deve estar em /some/where/lib/i386/jli/libjli.so (assumindo uma arquitetura i386). Se o rpath for absoluto, será necessário colocar libjli.so no local especificado exato ou definir LD_LIBRARY_PATH para incluir onde libjli.so é.