Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Lain

Como executar uma classe

Recommended Posts

Bom dia, amigos,

Eu não tenho experiencia nenhuma com JAVA, sou desenvolvedor PHP. Porém, agora um cliente quer que eu coloque o Itau Shopline no site Joomla deles. O Itau fornece uma classe (itaucripto.class), para fazer essa integração.

Bem, sobre a integração com o PHP, eu tenho o problema do PHP5 não ter o modulo Java, mas criei uma questão sobre isso no forum de PHP.

http://forum.imasters.com.br/topic/486558-integrao-itaushopline-itaucripto-com-php5/

 

Estou pensando em executar a classe no terminal, pelo PHP, e buscar o resultado, mas não sei como executar uma classe java.

Eu tentei algo e tive a seguinte saída:

 

root@host [/home/wf2si065]# java itaucripto.class param1 param2 param3
Exception in thread "main" java.lang.NoClassDefFoundError: itaucripto.class
   at gnu.java.lang.MainThread.run(libgcj.so.10)
Caused by: java.lang.ClassNotFoundException: itaucripto.class not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at gnu.java.lang.MainThread.run(libgcj.so.10)

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se queres executar o bytecode itaucripto.class, então você deve fazer o seguinte:

java itaucripto

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Se queres executar o bytecode itaucripto.class, então você deve fazer o seguinte:

java itaucripto

 

Obrigado pela resposta, eu fiz isso e não tive sucesso. O erro está abaixo, mas é o mesmo da postagem original.

Eu não devo fazer nada com esse arquivo antes? Eu baixei e movi para uma pasta chamada itau nos meus Documentos.

Provavelmente ela tem parâmetros que não passei, mas acho que a classe ia dar outro erro, certo?

 

rafaellain@maya:~/Documentos/itau$ java itaucripto
Exception in thread "main" java.lang.NoClassDefFoundError: itaucripto
Caused by: java.lang.ClassNotFoundException: itaucripto
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: itaucripto. Program will exit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A classe itaucripto não tem o método main, ou seja ela não pode ser executada.
Suponho que vc tenha estudado a documentação e a API da classe.
Vc tem que instanciar ela em outra classe para poder usá-la.

public class NomeClasse {

public static void main(String[] args) {
itaucripto ic = new itaucripto();
ic.executaMetodo1();
ic.executaMetodo2();
}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A classe itaucripto não tem o método main, ou seja ela não pode ser executada.

Suponho que vc tenha estudado a documentação e a API da classe.

Vc tem que instanciar ela em outra classe para poder usá-la.

 

public class NomeClasse {

public static void main(String[] args) {
itaucripto ic = new itaucripto();
ic.executaMetodo1();
ic.executaMetodo2();
}

}

 

Obrigado por sua resposta, eu não entendo absolutamente nada de Java, prometo que vou estudar assim que possível, mas preciso resolver agora...

Eu joguei este codigo num arquivo e rodei com o javac, ele me deu a seguinte saída:

rafaellain@maya:~/Documentos/itau$ javac Cripto.java 
Cripto.java:3: cannot find symbol
symbol  : class itaucripto
location: class Cripto
		itaucripto ic = new itaucripto();
		^
Cripto.java:3: cannot find symbol
symbol  : class itaucripto
location: class Cripto
		itaucripto ic = new itaucripto();
		                    ^
2 errors

 

estou rodando tudo de uma pasta chamada itau, nos meus Documentos. Eu li alguma coisa sobre configurar o classpath, não faço ideia do que seja isso, mas a julgar pelo nome, não tem nada a ver? Capitulando, tudo o que tenho é uma pasta chamada itau, com o itaucripto.class e o Cripto.java (com o código citado), nos meus Documentos.

 

Ah, sobre documentação da classe, não existe. Sei que tem dois métodos, o Cripto e o Decripto.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma olhada no exemplo que eles disponibilizam e infelizmente não consegui extrair muita coisa do exemplo. Então dei uma fuçada por curiosidade. Passo a passo seguem as coisas que tive que fazer pra funcionar. Só pra não nos perder vamos imaginar que tudo isso esteja sendo feito no diretório HOME.

 

Passo 1: crie uma pasta chamada Itau.

Passo 2: mova o arquivo itaucripto.class para dentro da pasta Itau.

Passo 3: renomeie o arquivo itaucripto.class para Itaucripto.class (Maiúsculo)

Passo 4: volte para o diretório HOME e crie o arquivo Exemplo.java com o conteúdo demonstrado abaixo

import Itau.Itaucripto;

public class Exemplo {

  public static void main(String[] args) {
    String codigoEmpresa = args[0]; // Número de 26 dígitos
    String pedido = args[1]; // Número inteiro
    String valor = args[2]; // Numérico
    String observacao = args[3];
    String chave = args[4]; // Deve ter 16 caracteres
    String nomeSacado = args[5];
    String codigoInscricao = args[6];
    String numeroInscricao = args[7];
    String enderecoSacado = args[8];
    String bairroSacado = args[9];
    String cepSacado = args[10];
    String cidadeSacado = args[11];
    String estadoSacado = args[12];
    String dataVencimento = args[13];
    String urlRetorna = args[14];
    String obsAdicional1 = args[15];
    String obsAdicional2 = args[16];
    String obsAdicional3 = args[17];
  
    Itaucripto itau = new Itaucripto();
    Object dados = itau.geraDados(
      codigoEmpresa, pedido, valor, observacao, chave, nomeSacado,
      codigoInscricao, numeroInscricao, enderecoSacado, bairroSacado, cepSacado,
      cidadeSacado, estadoSacado, dataVencimento, urlRetorna,
      obsAdicional1, obsAdicional2, obsAdicional3
    );
    
    System.out.println(dados);
  }
}

Passo 5: compile o arquivo de código-fonte com o comando javac Exemplo.java

Passo 6: execute o arquivo compilado com o comando java Exemplo param1 param2 param3 ... param18

 

O programa recebe 18 parâmetros que são obrigatórios e que devem ser passados para o método geraDados da classe Itaucripto. Veja no código-fonte a sequência dos parâmetros.

 

Tenta aí e veja no que dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma olhada no exemplo que eles disponibilizam e infelizmente não consegui extrair muita coisa do exemplo. Então dei uma fuçada por curiosidade. Passo a passo seguem as coisas que tive que fazer pra funcionar. Só pra não nos perder vamos imaginar que tudo isso esteja sendo feito no diretório HOME.

[...]

Passo 5: compile o arquivo de código-fonte com o comando javac Exemplo.java

Passo 6: execute o arquivo compilado com o comando java Exemplo param1 param2 param3 ... param18

 

O programa recebe 18 parâmetros que são obrigatórios e que devem ser passados para o método geraDados da classe Itaucripto. Veja no código-fonte a sequência dos parâmetros.

 

Tenta aí e veja no que dá.

 

Poxa, muito obrigado!

Hoje estou em casa, só tenho acesso ao servidor, lá não tem java, tem o gij e o gcj, Com o gcj não tive sucesso. Segue abaixo. Amanha estarei no escritório e poderei testar. Também vou tentar instalar o java mesmo no servidor, visto que com o gcj não funfou.

 

Muito obrigado.

 


wf2si065@wf2sistemas.com.br [~]# gcj Exemplo.java
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/tmp/cclrLCnT.o: In function `void Exemplo::main(JArray<java::lang::String*>*)':
cchJJXAY.jar:(.text+0x51f): undefined reference to `Itau::Itaucripto::class$'
cchJJXAY.jar:(.text+0x52f): undefined reference to `Itau::Itaucripto::Itaucripto()'
collect2: ld returned 1 exit status

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, eu nunca usei esse compilador GNU pra java. Eu utilizei o java 6, implementação da SUN/Oracle. Não saberia dizer se o mesmo código é compilado em java 5 ou 7.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, eu nunca usei esse compilador GNU pra java. Eu utilizei o java 6, implementação da SUN/Oracle. Não saberia dizer se o mesmo código é compilado em java 5 ou 7.

 

Tudo bem, muito obrigado mesmo assim. Amanha terei acesso ao java e testarei sua solução. Conseguindo isso, me viro para por o "Java de verdade" no servidor. Eu posto o resultado aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.