Executando .jar em linux

22 respostas
C

Boa Tarde…sou novo em Java e estou com o seguinte problema, tenho um cliente em São Paulo e a maquina dele é em Linux, desenvolvi um javamail e mandei o .jar na maquina dele via vpn, só que não estou conseguindo rodar esse .jar na maquina dele, na minha maquina que é wuindows 7 esse .jar roda normal. Esse é o erro.

Warning: -jar not understood. Ignoring.

Exception in tread main java.lang.NoClassDefFoundError: Claudir.jar

at gnu.gcj.runtime.FirstTread.run() (/usr/lib/libgcj.so.5.0.0)

at _Jv_RunMain (java.lang.Class, byte const, int, byte const, boolean) (/usr/lib/libgcj.so.5.0.0)

at_libc_start_main (/lib/i686/libc-2.3.4.so)

atJv_RegisterClasses (/home/oracle/abaco/java.version=1.4.2)

[oracle@bpndbohm abaco] $ at gnu.gcj.runtime.FirstTread.run() (/user/lib/libgcj.so.5.0.0)

Grato.

22 Respostas

renanedpedroso

Como está configurado o Class-Path do seu arquivo manifest?

Como você está chamando o .jar no linux?

C

java -jar nome_do_arquivo.jar

KWill

Carbachuts:

Boa Tarde…sou novo em Java e estou com o seguinte problema, tenho um cliente em São Paulo e a maquina dele é em Linux, desenvolvi um javamail e mandei o .jar na maquina dele via vpn, só que não estou conseguindo rodar esse .jar na maquina dele, na minha maquina que é wuindows 7 esse .jar roda normal. Esse é o erro.

Warning: -jar not understood. Ignoring.

Exception in tread main java.lang.NoClassDefFoundError: Claudir.jar

at gnu.gcj.runtime.FirstTread.run() (/usr/lib/libgcj.so.5.0.0)

at _Jv_RunMain (java.lang.Class, byte const, int, byte const, boolean) (/usr/lib/libgcj.so.5.0.0)

at_libc_start_main (/lib/i686/libc-2.3.4.so)

atJv_RegisterClasses (/home/oracle/abaco/java.version=1.4.2)

[oracle@bpndbohm abaco] $ at gnu.gcj.runtime.FirstTread.run() (/user/lib/libgcj.so.5.0.0)

Grato.


Acredito que pode ser culpa da IMENSAMENTE ÉPICA E ENORME “cagada” de várias distribuições Linux instalarem POR PADRÃO GCJ como JVM e JDK ao invés de instalarem o JRE/JDK distribuidos pela Sun+Oracle. Até meu notebook HP já vinha com JRE da Sun+Oracle.
Tive inúmeros problemas para desenvolver em AWT/Swing de forma que rodasse bem no GCJ, até que mandei o AWT/Swing pro espaço e usei SWT no lugar.
Recomendo instalar o JRE/JDK da Sun+Oracle.
Pelo que dá para ver o GCJ não gosta do parâmetro “-jar”, então coloque o seu jar como parâmetro no classpath via “-cp” e passe também o nome da “main-class”, porque não sei se o GCJ procura sozinho pela “main-class” nos manifests.

Inté.

renanedpedroso

Poste o conteúdo do Manifest aqui…

Poste também as bibliotecas que você está utilizando.

C
import java.util.<em>;

import javax.mail.</em>;

import javax.mail.internet.<em>;

import javax.activation.</em>;
C

Sou novo em Java, como faço para ver o conteudo do manifest…
eh isso??

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

renanedpedroso

Carbachuts, preciso do conteúdo do arquivo Manifest.

C

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.0-b13 (Sun Microsystems Inc.)
Main-Class: claudir.Main
Class-Path: lib/activation.jar lib/mail.jar
X-COMMENT: Main-Class will be added automatically by build

eh isso??

renanedpedroso

Tente o seguinte…

Vá no diretório de onde você está tentando executar seu jar e adicione os jars das bibliotecas de acordo com o Class-Path do seu Manifest:

Exemplo:

No diretório

c:\temp\

Existe o seu jar

c:\temp\ArquivoPrincipal.jar

Então você terá que criar uma pasta lib

c:\temp\lib\

E dentro dessa pasta adicionar seus jars (bibliotecas)

c:\temp\lib\activation.jar
c:\temp\lib\mail.jar

Ao executar ele tenta ‘encontrar’ suas bibliotecas de acordo com o que está informado no Class-Path do Manifest.

Copie a pasta lib com seus jars para a mesma pasta onde o jar se encontra.

Espero ter ajudado.

Abraço!

KWill

Afinal, tentaram ou não instalar JRE/JDK da Sun+Oracle nessa máquina Linux? Ou ainda não perceberam que pelo jeito estão usando GCJ?

Inté.

renanedpedroso

Kwill, tudo bem?

Eu acho que devemos verificar o problema mais comum primeiro e, assim que tudo estiver configurado (nos conformes) aí sim podemos pensar nessa possibilidade da máquina virtual.

Não estou criando conflitos, só acho que é melhor verificar o problema pelo modo mais fácil e depois verificar outros problemas mais esporádicos.

Geralmente a dificuldade que as pessoas têm com arquivos .jar é e adição dos arquivos .jar (das bibliotecas) no mesmo diretório.

Abraço!

C

Ta instalado sim…o banco de la eh oracle tbm…mais o erro persiste

renanedpedroso

Já tentou verificar o meu 4º post?

Abraço!

KWill

Carbachuts:
Ta instalado sim…o banco de la eh oracle tbm…mais o erro persiste

Não seria questão apenas de averiguar se tá instalado o JRE/JDK da Sun+Oracle, tem que ver se é o que tá configurado para rodar como padrão. Peça para digitarem num terminal nessa máquina Linux: “java -version” ou “java --version”. Se aparecer um tal de OpenJDK no meio do terminal, o treco tá bichado, precisa configurar para usar o JRE da Sun+Oracle ou fazer uso de alguns macetes que podem acabar parecendo magia negra.
Eu não perderia muito o meu tempo tentando fazer rodar no GCJ e para mim o que tá rodando agora é o GCJ mesmo, basta olhar um pouco o stacktrace do primeiro post do tópico…

Inté.

C

Sim…fiz o seu 4° post e o erro eh o msm…pq roda aki no meu pc de boa e la naum

renanedpedroso

Agora sim recomendo verificar o que o KWill te orientou a fazer.

C

Java version 1.4.2
gcj (gcc)3.4.3 20041212 (Red Hat 3.4.3-9.EL4)

renanedpedroso

Acho que o KWill estava com a razão desde o início… :slight_smile:

Tente mudar a versão da máquina virtual.

Não entendo muito desse problema de máquina virtual no linux, creio que o KWill poderá te ajudar mais do que eu.

KWill

Carbachuts:
Java version 1.4.2
gcj (gcc)3.4.3 20041212 (Red Hat 3.4.3-9.EL4)

GCJ confirmado.
Vejo dois caminhos:

  1. Instalar o JRE da Sun+Oracle e botar ele como padrão para rodar aplicações Java.
  2. Modificar o script de inicialização, pois o gcj parece continuar meio burro a ponto de ignorar o manifest (http://gcc.gnu.org/java/projects.html).
    Na modificação do script, em vez do “-jar”, você precisa passar o caminho de todos os jars que são usados com “-cp [jar1]:[jar2]:[…]”, além de dar o nome da “main-class” nesse script de inicialização.
    Esse gcj instalado e configurado aí tá ficando velho mesmo, é baseado no GCC versão 3.4.3, liberado em 2004. A última versão do GCC liberada é a 4.4.3.

Inté.

C

Resolvido…muito obrigado…

KWill

Resolveu como?

Inté.

C

Adicionou os dois .jar da past lib, no classpath da maquina Linx…mais teve que criar um executavel no banco para rodar o jdk 1.6…vlw

Criado 24 de março de 2010
Ultima resposta 25 de mar. de 2010
Respostas 22
Participantes 3