Execução em Terminal

73 respostas
crisbortolanza

Eu estou utilizando o Kate, Editor de Textos Simples, para fazer uns testes e para executar no terminal eu uso: “javac nome.java”, aí cria um “nome.class”, e como eu faço para executar a telinha???

Alguém pode me passar o comando?
Vlw…

73 Respostas

alucardeck

executar a telinha ?

pra rodar o programa usa o comando “java”

“java nome.class”

P

alucardeck:
executar a telinha ?

pra rodar o programa usa o comando “java”

“java nome.class”

Errado. NÃO COLOQUE O .CLASS NO FINAL!

Se a classe compilada é “Minhaclasse.class” use : “java Minhaclasse”. Só.

crisbortolanza

Eu tentei mas aparece isso:
(…$ java sinaleira.class)=>Minha execução

Exception in thread main java.lang.NoClassDefFoundError: sinaleira.class

at gnu.java.lang.MainThread.run(libgcj.so.7)

Caused by: java.lang.ClassNotFoundException: sinaleira.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.7)

at java.lang.ClassLoader.loadClass(libgcj.so.7)

at java.lang.ClassLoader.loadClass(libgcj.so.7)

at java.lang.Class.forName(libgcj.so.7)

at gnu.java.lang.MainThread.run(libgcj.so.7)
crisbortolanza

Sergio Figueras, quando eu faço isso aparece:
(…$ java sinaleira)=> Minha execução

Exception in thread main java.lang.ClassFormatError: sinaleira (unrecognized class file version)

at java.lang.VMClassLoader.defineClass(libgcj.so.7)

at java.lang.ClassLoader.defineClass(libgcj.so.7)

at java.security.SecureClassLoader.defineClass(libgcj.so.7)

at java.net.URLClassLoader.findClass(libgcj.so.7)

at java.lang.ClassLoader.loadClass(libgcj.so.7)

at java.lang.ClassLoader.loadClass(libgcj.so.7)

at java.lang.Class.forName(libgcj.so.7)

at gnu.java.lang.MainThread.run(libgcj.so.7)
alucardeck

Sergio Figueras:
alucardeck:
executar a telinha ?

pra rodar o programa usa o comando “java”

“java nome.class”

Errado. NÃO COLOQUE O .CLASS NO FINAL!

Se a classe compilada é “Minhaclasse.class” use : “java Minhaclasse”. Só.

opa… desatenção minha =)

ViniGodoy

Leia o que o Sergio escreveu.

ViniGodoy

ahahahhah… esses posts simultâneos.

O java também faz distinção entre letras maiúsculas e minúsculas.

É diferente digitar java sinaleira e java Sinaleira.

Use o que estiver na sua classe.

crisbortolanza

Este é o nome sinaleira.java, depois de executar o “javac sinaleira.java” ele criou o sinaleira.class, aí eu fiz como vocês falaram: “java sinaleira” e deu aqueles erros.

Está tudo em minúsculo, como eu sempre faço para não me perder.

O que eu faço???
Será que é erro em alguma linha???
Vlw…

rissato

vc definiu algum package? se sim tenta:

java nomeDoPackage.NomeDaClasse

crisbortolanza

Na verdade eu não fiz nada de mais, só usei alguns if e else e estrutura de repetição while, nada mais, acho que não tem nada de package…

Obs.: O que é package???
Vlw!

rissato

package vc define na primeira linha do fonte:

package seunome.seupackage;

public class SuaClasse {
...
}

pra rodar essa classe ai, vc precisa digitar:

java seunome.seupackage.SuaClasse

crisbortolanza

Então não tem nenhum package, porque começa assim:

import javax.swing.JOption Pane;

class sinaleira {

public static void main(String args[]) {
T

vc esta usando o comando java no diretorio corrente ?

o comando javac procura arquivos .java no diretorio corrente por padrao
mas o comando java nao faz isso . vc pode indicar isso a ele usando a seguinte sinatxe
java -cp . nome

obs note o ponto apos o cp , é ele quem indica ao java usar o diretório corrente
cetifique-se de estar no mesmo diretorio onde esta seu arquivo nome.class

crisbortolanza

Esse é o código e o erro que dá é referente ao “main” da linha 3… Não sei o que é. E mesmo com o java - cp . adivinhar não deu certo. E agora?

import javax.swing.JOptionPane; class sinaleira { public static void main(String args[]) { String sinal; int cont; cont=1; while (cont<=4) { sinal = JOptionPane.showInputDialog(null,"Digite o Sinal","Sinaleira",JOptionPane.ERROR_MESSAGE); if (sinal.equalsIgnoreCase("verde")) { JOptionPane.showMessageDialog(null,"Siga!"); }else if (sinal.equalsIgnoreCase("amarelo")) { JOptionPane.showMessageDialog(null,"Atenção!"); }else if (sinal.equalsIgnoreCase("vermelho")) { JOptionPane.showMessageDialog(null,"Pare!"); }else { JOptionPane.showMessageDialog(null,"Você é daltônico por acaso!?!"); } cont++; } } }

crisbortolanza

O que é esse “String args[]”?
E pra que serve esse “[]”?
Vlw…

P

Cara, eu achei esse seu código muito confuso. Mas ai coloquei auqi no eclipse e rodou. È algum problema de configuração mesmo. Você tá usando algum pacote? Usando eclipse, netbeans, ou o q?

[]'s!

P

Esse parametro do método main, String [] args, significa que é uma lista de argumentos que o metodo pode receber. Mas uma coisa, voce mesmo que fez esse codigo fonte?

[]'s

crisbortolanza

Não to usando nem netbeans, nem eclipse, só um editor de textos simples (Kate) e executando em um termina.

Era um exercício do meu curso e eu achei assim o modo mais fácil, primeiro a gente faz no “braço” e depois no netbeans.

Acho o problema???

Vlw…

P

O problema é alguma configuração sua. Aqui rodou tranquilo.

Faz assim…

Cria um arquivo vazio com o nome de sinaleiro.java , cola essa CF ai dentro, e digita javac sinaleiro.java, depois só digitar java sinaleiro

Mas vou voltar a pagina anterior e ver o teu stacktrace, perai…

P

Veja:

http://java.sun.com/j2se/1.4.2/docs/guide/deployment/deployment-guide/upgrade-guide/article-01.html

[]'s

crisbortolanza

Ó cara tenho que ir, amanhã eu continuo
Vlw pela ajuda…

O
Exception in thread "main" java.lang.ClassFormatError: sinaleira (unrecognized class file version)

Este erro diz respeito a ter compilado o código com uma versão de Java e rodar o código em uma versão de JVM inferior.

Exception in thread "main" java.lang.ClassFormatError: sinaleira (unrecognized class file version) at java.lang.VMClassLoader.defineClass(libgcj.so.7) at java.lang.ClassLoader.defineClass(libgcj.so.7) at java.security.SecureClassLoader.defineClass(libgcj.so.7) at java.net.URLClassLoader.findClass(libgcj.so.7) at java.lang.ClassLoader.loadClass(libgcj.so.7) at java.lang.ClassLoader.loadClass(libgcj.so.7) at java.lang.Class.forName(libgcj.so.7) at gnu.java.lang.MainThread.run(libgcj.so.7)

Olhando o stacktrace deu para notar que você está usando GNU JVM que vem como default na instalação do Linux. Provavelmente é problema do seu PATH. Configure corretamente o PATH com o diretório que está instalado a sua JDK para rodar o código.

crisbortolanza

Oyama você estava certo…
Agora rodo tranqüilo…
Vlw

crisbortolanza

FIM DO PRIMEIRO PROBLEMA

crisbortolanza

Início do segundo:

Eu estava testando um exemplo sobre switch e case, esse era o exemplo:

class switch { public static void main (String args []) { if (args.length == 1) { int x; x = Integer.parseInt (args [0]); switch (x) { case 0: System.out.printIn("ZERO"); break; case 1: System.out.printIn("UM"); break; case 2: System.out.printIn("DOIS"); break; case 3: System.out.printIn("TRÊS"); break; case 4: System.out.printIn("QUATRO"); break; case 5: System.out.printIn("CINCO"); break; case 6: System.out.printIn("SEIS"); break; case 7: System.out.printIn("SETE"); break; case 8: System.out.printIn("OITO"); break; case 9: System.out.printIn("NOVE"); break; default: System.out.printIn("NÚMERO DESCONHECIDO"); } }else { System.out.printIn("NÚMERO DE ARGUMENTOS INVÁLIDOS"); } } }

Aí surgiu os seguintes erros, tavez será que o exemplo não está completo ou o que???

switch.java:1: expected
class switch {
^
switch.java:34: reached end of file while parsing
}▒
^

alucardeck

creio q vc nao pode criar uma classe com o nome “switch”

jah q eh uma palavra reservada do Java…

mude o nome para “Switch” ou outra coisa… q deve funcionar

crisbortolanza

Era isso mesmo, mas agora deu erro em todas as frases:

symbol  : method printIn(java.lang.String)

location: class java.io.PrintStream

System.out.printIn("…");
alucardeck

no seu codigo System.out.printIn(…)
esta printIn ?

deveria ser ln (LN) e não (IN)…

System.out.println

crisbortolanza

Vlw cara eu nem tinha percebido e nem ia perceber.

Agora foi, mas deu a mensagem do else do CF: NÚMERO DE ARGUMENTOS INVÁLIDOS…

Foi mas como eu faço ele funcionar certinho os case

alucardeck

bom… de acordo com o programa…
ele soh vai rodar se vc enviar exatamente 1 parametro

entao execute

java Switch 1

ou
java Switch 5

ou
java Switch 9

e ele deve executar corretamente…

crisbortolanza

Você testo isso que você acabo de falar???

Porque pra mim não dá certo:

Exception in thread “main” java.lang.NoClassDefFoundError: Switch

Esse é o erro, porque o nome da classe é casos e não Switch

Vlw…

alucardeck

ueh… falei Switch pq eh o nome q eu colocaria aqui =)

se a sua eh “casos” ponha “casos” oras…

java casos 1
java casos 5
java casos 9

sim jah testei, e funciona perfeitamente

T

pode ser que não esteja encontrando o diretorio onde estao as suas classes do JSE e ocorre este erro
tente fazer o seguinte

$JAVA_HOME=<caminho até a o / de jsdk>
$PATH=$PATH:$JAVA_HOME/bin

java - cp. : $JAVA_HOME \lib\tools.jar

ainda contem o ponto mas agora adicionamos : $JAVA_HOME \lib\tools.jar

verifique esta questao de classpath e variaveis de ambiente
neste link http://www.guj.com.br/java.tutorial.artigo.163.1.guj tem um pdf explicando a instalação do java mas fala sobre variaveis de
ambiente
Acho que isso pode te ajudar

crisbortolanza

Vlw Thiago veiga, mas funcionou do jeito do alucardeck: java casos 1…

Ô alucardeck eu falei na boa, nada mais…
Já falei sou iniciante, não tava tentando sabe mais.

Você tava certo funcionou perfeitamente…
Obrigado, vlw…

crisbortolanza

FIM DO SEGUNDO PROBLEMA

crisbortolanza

Início do terceiro:

Não sei se exite uma forma de pegar os números que são digitados para somar, mas se tem me digam, já agradeço:

import javax.swing.JOptionPane; class laço { public static void main(String args[]) { String sinal; int cont; cont=1; while (cont<=4) { sinal = JOptionPane.showInputDialog(null, "Digite um número:" , "Somando" , JOptionPane.PLAIN_MESSAGE); cont++; } } }

T

Scanner input = new Scanner (System.in );

int numero = input.nextInt();

crisbortolanza

Ó Thiago eu fiz umas coisas aqui nada a ver e não consegui, você pode me ajudar???

import javax.swing.JOptionPane; class laço { public static void main(String args[]) { Scanner input = new Scanner (Systen.in ); String sinal; String result; int cont; int pega = input.nextInt(); cont=1; pega=1; while (cont<=4) { sinal = JOptionPane.showInputDialog(null, "Digite um número:" , "Somando" , JOptionPane.PLAIN_MESSAGE); cont++; } while (pega<=4) { pega++; } result = JOptionPane.showMessageDialog(null, pega, "Números") } }

T

a variavel pega ta recebendo o valor que o usuario digita mas depois vc atrui o valor 1 para ela
e perde o valor que o usuario digitou

a String sinal tambem vai ficar com o ultimo valor digitado

crisbortolanza

E como eu faço para pegar os quatro valores que a pessoa digita e depois jogar esses valores em variáveis para fazer um cálculo???

Vlw

alucardeck

depende de como vc quer fazer o calculo

se for algo simples... pode fazer na propria variavel..

//exemplo SOMA..

int digitado=0;
cont=1;
soma=0;
while (cont<=4) {
       digitado = input.nextInt();
       soma+=digitado;
       cont++;
}

System.out.println ( soma ) ;


//exemplo Multiplicacao entre os 4 numeros..

int digitado=0;
cont=1;
produto=0;
while (cont<=4) {
       digitado = input.nextInt();
       produto*=digitado;
       cont++;
}

System.out.println ( produto) ;
T
Scanner input = new Scanner (System.in);
int resultado = 0;
int i = 0;
while (i < 4){
System.out.println("digite o num " + i);
resultado += input.nextInt();
i++ 
}
System.out.println(resultado);
crisbortolanza

Ainda não consegui mas deixa pra lá, vou estudar mais um pouco e depois retomar com os teste…

Mas vlw pela força.

crisbortolanza

Eu tava aqui estudando um pouco aqui e vi escrito aqui na apostila algumas coisas.

E daí eu queria saber qual é a diferença de J2SE, J2ME E J2EE de uma forma simples…

Vlw…

T

JSE Java Standart Edition - é o mais comum este q vc instalou na sua maquina
JME Java Micro Edition - para dispositivos moveis como celulares
JEE - Java Enterprise Edition - para desenvolvimento Web

bsijava

Seguinte eu tambpém entrei no fórum e descobri que preciso aprender mais por isso corri atrás de apostilas e de uma forma simples posso dizer o seguinte:
Todos esses J2 são ferramentas de Desenvolvimento.
J2SE: - É o ambiente de desenvolvimento mais utilizado. Isso porque seu uso é voltado a PcS e servidores, onde há bem mais necessidade de aplicações.

J2ME: é o ambiente de desenvolvimento para dispositivos móvei ou portáteis, como telefones celulares, palmtops, relógios e até mesmo cartões de crédito. Há basicamente 2 tipos de aplicativos em linguagem J2Me:
Aplicativos locais: diretamente de um aparelho
Aplicativos em rede: interagem com rede de dados:

J2EE: é a plataforma java voltada para redes, internets, intranets e afins.
espero ter ajudado vlw

crisbortolanza

Era isso mesmo que eu queria saber, agora vô voltar a fazer mais uns testes pra tirar mais algumas dúvidas…

Vlw pros 2, t+

bsijava

Pessoal aproveitando o embalo estou trabalhando com a função throw e fiz um exemplo simples que está longe de parecer com uma aplicação real; ele funciona e está fazendo a exceção!!!E quando que não faz???
se alguém puder me ajudar.!!!

class excecao{ public static void main (String args[]) { try{ System.out.print ("Como aprender"); throw new Exception ("MinhaExcecao"); } catch (Exception MinhaExcecao){ System.out.println(" a linguagem Java?"); } } }

crisbortolanza

Eu estava testando o try e o catch com esse exemplo:

class estrutura { public static void main (String args []) { try { int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]); System.out.println("Soma = " + (num1 + num2)); System.out.println("Subtração = " + (num1 - num2)); System.out.println("Multiplicação = "+ (num1 * num2)); System.out.println("Divisão = " + (num1 / num2)); }catch (ArithmeticException e) { System.out.println("Erro de divisão por zero"); }catch (ArrayIndexOutOfBoundsException e) { System.out.println("Número de argumentos inválidos"); }catch (NumberFormatException e) { System.out.println("Digite apenas números inteiros"); } } }
Mas daí da os erros das Exception:

estrutura.java:10: cannot find symbol

symbol  : class AritmeticException

location: class estrutura

}catch (AritmeticException e) {

^

estrutura.java:12: cannot find symbol

symbol  : class ArrayIndexOutOfboundsException

location: class estrutura

}catch (ArrayIndexOutOfboundsException e) {

^

Diz que não tem essas classe, mas na verdade são exceções, como no caso da linha 14, se o cara digitar números quebrados, já que o formato do número é inteiro, vai mandar a mensagem de erro, pedindo para digitar números inteiros…
Como eu resolvo esses erros???

Vlw…

bsijava

Cris tenta mudar os args!!!
os dois estão “0”
ok

crisbortolanza

Mudei e mesmo assim continua dando erros, não nesse caso, mas diz que eu não tenho aquelas classes, que não tem nada a vê, são só exceções…
Mas isso também tava errado mesmo era 0 e 1.
Vlw

bsijava

Cris na linha 14 falta um c em exception
vlw
da uma olhada nos outro tb
ok

crisbortolanza

Esse agora fecho, mas os outros ainda não…

Tem alguém aí do GUJ pra nos ajudar???

Vlw…

bsijava

cris esta faltando um h arithmetic!!!
ok ve ai e muda
vlw

alucardeck

tem varios erros “ortograficos” ai…

nao esta na hora de usar um Eclipse pra te ajudar com isso não?

aqui esta o metodo arrumado

class estrutura { public static void main (String args []) { try { int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]); System.out.println("Soma = " + (num1 + num2)); System.out.println("Subtração = " + (num1 - num2)); System.out.println("Multiplicação = "+ (num1 * num2)); System.out.println("Divisão = " + (num1 / num2)); }catch (ArithmeticException e) { System.out.println("Erro de divisão por zero"); }catch (ArrayIndexOutOfBoundsException e) { System.out.println("Número de argumentos inválidos"); }catch (NumberFormatException e) { System.out.println("Digite apenas números inteiros"); } } }

crisbortolanza

era isso mesmo, mas essa não fui eu tava errado no exemplo e também já achei o erro da linha 12 era ArrayIndexOutOfBoundsException e, com o B maiúsculo

vlw…

crisbortolanza

Bom agora tudo arrumado, está executando apenas o segundo catch:
ArrayIndexOutOfBoundsException e, dando a mensagem: “Número de argumentos inválidos”, era isso que eu não entendo, para que serve esse exception, como eu tenho que executar???

vlw…

alucardeck

vc deve executar com 2 argumentos…
jah q existe o [0] e o [1]…

entao seria:

" java estrutura 4 2 "
java estrutura 6 3
java estrutura 1 2

e por ai vai

crisbortolanza

ah vlw, então é pra isso que serve os args[], os argumentos de cada execução né, é por aí…
Agora se esclareceu muitas dúvidas que eu tinha…

brigadão…

crisbortolanza

Achei esse exemplo muito loco, na minha opinião, ele fecha o class antes de terminar:

class xy { public static void main (String args []) { if (args.length == 2) { System.out.println("Resultado = " + soma (args[0], args[1])); }else { System.out.println("Entre com dois valores inteiros"); } } } public static int soma (String num1, String num2) { int x=0, y=0; try { x = Integer.parseInt(num1); y = Integer.parseInt(num2); }catch (NumberFormatException e) { System.out.println("Digite apenas caracteres numéricos"); System.exit (0); return (x + y); } }

Dá erro na linha 10 pedindo um class, porque o de cima já está fechado, aí tentei fechar só no final e também não deu, o que eu faço???

alucardeck

bom ai é falta de analise sua…

o class xy esta sendo fechado na linha 9…
entao o metodo “soma” esta fora da classe…
apague a linha 9…
e coloque o “}” na linha 21

depois disso vai dar um erro… pedindo um return do INT…

esse eu deixo com vc…
Dica: o Return deve acontecer de qualquer forma dentro de um metodo (q exige um retorno)…

no caso esta apenas retornando se der Catch… vc precisa fazer algo que retorne um INT de qualquer maneira

crisbortolanza

Bom era esse o exemplo que estava na apostila, como eu falei muito loco, porque fechava o class antes de acabar, isso eu vi, analisei e postei…

…Também postei que já tentei fechar no final e que dava um erro, que é esse que você mencionou do return do INT e foi esse erro que eu pedi ajuda…, pois eu não sei e nessa apostila (que não serve pra muita coisa) não explica como faz.

Mas deixe comigo.

bsijava

Pessoal aproveitando o tópico e eu estou montando uma tela que faz contagem do caracteres!!!!!! Usando na contagem de bytes a função length!!!! ate ai tudo bem! Mas eu tentei fazer umas ganbiarras para fazer a contagem de bits também mas não deu certo pois não esta recebendo a frase!!!!
Alguém ai ajuda
vlw agradeço desde jah
o erro da na linha 11

import javax.swing.JOptionPane;


class texto {
	public static void main (String args[]) {
		String frase;
		String bits;
		int totbits;			
		frase = JOptionPane.showInputDialog(null, "Digite uma Frase","Contagem de Bytes e Bits", JOptionPane.PLAIN_MESSAGE);			
		JOptionPane.showMessageDialog(null, "O número de Bytes é " + frase.length());	
		bits = frase.length();
		int bitsa = Integer.parseInt(bits);		
		totbits = bitsa*8;
		JOptionPane.showMessageDialog(null, "O número de Bits é " + totbits);
	}
}
alucardeck

bits foi declarada como uma variavel do tipo String…
ela esta recebendo uma INT do metodo frase.length();

entao nao são compativeis… =)

para arrumar vc precisa fazer um CAST para String…
ou simplesmente colocar ’ +"" ’

exemplo
bits = frase.length()+"";

bsijava

Eu modifiquei a declaração de bits para Int;
mas agora da erro na linha de baixo!!!
achei que não teria problema pois a frase foi declarada string e bits estaria recebendo a frase para depois fazer a conversão!!!
e agora???
vlw

bsijava

Ops não vi o resto da tua mensagem!!!
fiz as modificações agora da erro na conversão e no + acho que vou precisar fazer este cast???

alucardeck

tem variaveis inuteis ai…

vamos rever…

praq a variavel String bits ?

ela nao tem utilidade…

entao vc pode deletar a linha 7 e 11

e mudar a linha 12

de:

int bitsa = Integer.parseInt(bits);

para:

int bitsa = frase.length();
bsijava

Vlw alucardeck deu certo feito entaum !!!
brigado agora nas aulas de Introdução de Processamento de Dados da pra testa essa telinha!!!

vlw

bsijava

achei que teria de receber a frase pra depois converter mas era inútil!!!

alucardeck

heheh rlx…

no caso vc jah declarou uma String chamada “frase”…
entao nao existiria nenhum motivo pra vc fazer uma copia dela =)

e como o metodo .length retorna uma INT… vc pode passar direto pra ela, sem problemas…

bsijava

Sim sim agora concordo totalmente!!!
é que antes havia dado um erro ao passar direto pra ela!
Dava erro na conversão, mas devia ser apenas um erro na hora da digitação
vlw

crisbortolanza
Muito legal isso para contar Bytes e bits, mas depois de todas alterações no fim já que você tirou uma variável, também daria de tirar a váriavel int bitsa e ficaria assim:
import javax.swing.JOptionPane;


class texto {
	public static void main (String args[]) {
		String frase;		
		int totbits;			
		frase = JOptionPane.showInputDialog(null, "Digite uma Frase","Contagem de Bytes e Bits", JOptionPane.PLAIN_MESSAGE);			
		JOptionPane.showMessageDialog(null, "O número de Bytes é " + frase.length());		
		totbits = frase.length()*8;
		JOptionPane.showMessageDialog(null, "O número de Bits é " + totbits);
	}
}
Dá para fazer direto a multiplicação do frase.length(), mas tá certo, só para mostrar que tem vários caminhos para isso.. Vlw..
crisbortolanza

Ou ainda:

import javax.swing.JOptionPane; class texto { public static void main (String args[]) { String frase = JOptionPane.showInputDialog(null, "Digite uma Frase","Contagem de Bytes e Bits", JOptionPane.PLAIN_MESSAGE); JOptionPane.showMessageDialog(null, "O número de Bytes é " + frase.length()); JOptionPane.showMessageDialog(null, "O número de Bits é " + frase.length()*8); } }

Criado 28 de julho de 2008
Ultima resposta 30 de jul. de 2008
Respostas 73
Participantes 8