Rodando Java no Win XP

35 respostas
A

Ola galera

Sou novo por aqui portanto as duvidas normalmente aparecem, correto.

Instalei o JDK na minha máquina e tudo foi ok, criei um arquivo .java e compilei normalmente.
Na hora de executar o arquivo .class nao carregou, observando dentro da pasta ele criou esse arquivo .class.
Aparece uma mensagem de erro dissendo " could not find the main class… program will exit

As minhas variaveis de ambiente estao assim:

CLASSPATH .;JAVA_HOME
JAVA_HOME c:\jdk…
PATH c:\jdk…\bin

Obrigado

35 Respostas

Rafael_Carneiro

Como está o seu código?

A

class MeuPrograma { public static void main (String [] args) { System.out.println ("testando java no meu pc"); } }

ViniGodoy

Troque para public class:

public class MeuPrograma { public static void main (String [] args) { System.out.println ("testando java no meu pc"); } }

Ah, e sempre que postar código, usa a tag code, para ficar colorido e identado, igual esse aqui em cima.

ViniGodoy

Para usar a tag code, basta fazer assim:

public class MeuPrograma {  
   public static void main (String [] args) {  
      System.out.println ("testando java no meu pc");  
   }  
}

Para funcionar a opção “Desabilitar formatação BB nesta mensagem” deve estar desligada.

A

fiz a mundança mais continua com o mesmo erro

ViniGodoy

Você está escrevendo:

java MeuPrograma

na linha de comando?

É errado escrever:
java MeuPrograma[color=“red”].class[/color]

dizanorton

Verifique se o nome da sua classe é o mesmo do ficheiro .java (inclusive maiusculas e minusculas)…
Ex:

classe: public class MinhaClasse {…}
ficheiro: MinhaClasse.java

A

o que acontece que da tudo certo o nome
inclusive ele cria dentro da pasta o arquivo .class so que não roda.

ViniGodoy

Põe um printscreen aí da tela do console com o erro.

emmanuelrock

Cara, olhando a sua classe não vejo a palavra package, talvez seja isso, coloque o nome da pasta (package) no qual sua classe está incluída, recompile e rode novamente.

A
Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Usuario>javac c:\java\MeuPrograma.java

C:\Documents and Settings\Usuario>java c:\java\MeuPrograma
Exception in thread "main" java.lang.NoClassDefFoundError: c:\java\MeuPrograma
Caused by: java.lang.ClassNotFoundException: c:\java\MeuPrograma
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: c:\java\MeuPrograma.  Program will exit.
emmanuelrock

Renomeie o pacote. Se deixar como java o compilador vai achar que é o pacote padrão.

A

ja foi feito isso, nada

dudu_sps

tenta por para rodar

java MeuPrograma
sem o caminho

ViniGodoy

Eu concordo com o dudu. E note também que o erro que está dando não é igual ao erro que você disse no primeiro tópico.

A

Galera infelismente ja tentei de tudo e nao rodou, teve ser alguma coisa no windows.

ViniGodoy

Duvido.

dizanorton

é melhor desinstalar o JDK e tentar instalar novamente

ViniGodoy

Vá no diretório onde está o seu .class e digite somente:
java MeuPrograma

Se der erro, cole novamente o printscreen do prompt aqui.

A
C:\Documents and Settings\Usuario>java c:\teste\MeuPrograma
Exception in thread "main" java.lang.NoClassDefFoundError: c:\teste\MeuPrograma
Caused by: java.lang.ClassNotFoundException: c:\teste\MeuPrograma
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: c:\teste\MeuPrograma.  Program will exit.
dudu_sps

pelo cmd

digite assim oh
cd c:\teste

logo apos digite java MeuPrograma

dai acho que vai roda

A

Sensacional

rodou, mais do jeito que estava fazendo tava errado?
javac c:\teste\MeuPrograma.java

java c:\teste\MeuPrograma

ViniGodoy

Estava sim.

Você deve colocar depois do Java o nome da classe, não do arquivo (como já haviamos explicado).

Se você colocar o caminho, o java entenderá que a classe se chama C:\java\MeuArquivo

A

quero agradecer a todos pela ajuda e principalmente a paciência para com minhas mensagens.

Achei o forum fantastico principalmente pela rapidez nas respostas.

Valeu

ViniGodoy

De nada.

Pra ser bem sincero, eu também já tive o mesmo problema que você com o java.exe…

A

:slight_smile:

E

Uma coisa que acho irritante no java.exe é que ele não explica que você está passando um parâmetro errado para ele - ele dá uma mensagem (classe não encontrada) que está correta, mas que não lhe ajuda. Ele deveria detectar que o que você passou é um nome de arquivo e explicar:

rem Isto é o que eu gostaria que o Java.exe lhe explicasse:
 C:\Documents and Settings\Usuario>java c:\teste\MeuPrograma  
Unrecognized argument: c:\teste\MeuPrograma
One must pass a class name (like com.example.MyClass), not a file name. Program will exit.
ViniGodoy

Especialmente porque aquilo nem sequer é um nome de classe válido. Aí vc implicitamente admite que ele não está falando do “c:\teste” quando ele reclama do nome da classe.

E

Acho que deve haver coisas no Java que são vestígios do tempo em que os pacotes eram identificados por barras, não por pontos:

// Em alguma versão muito antiga do Oak (pré-Java) deveria haver algo como:

package com/sun/misc;
...
com/sun/misc/Something sm = new com/sun/misc/Something();

E é por isso que algumas coisas (como os nomes de classes em mensagens de erro) ainda têm vestígios daquele tempo.

Quem nunca viu uma mensagem de erro onde aparece algo como “Ljava/lang/String;” ?

Acho que é por isso que o java.exe nem se preocupa em ficar validando nomes de classes. É porque o executável java em Unix (onde os nomes de arquivos usam “/” em vez de “” ) provavelmente deve até aceitar esses nomes antigos para as classes.

ViniGodoy

Verdade, esses nomes de classes com barras ainda são usados no JNI.

De qualquer forma, os : não são aceitos. E concordo com você, o erro poderia ser muito mais descritivo.

B
araujodocarmo:
Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Usuario>javac c:\java\MeuPrograma.java

C:\Documents and Settings\Usuario>java c:\java\MeuPrograma
Exception in thread "main" java.lang.NoClassDefFoundError: c:\java\MeuPrograma
Caused by: java.lang.ClassNotFoundException: c:\java\MeuPrograma
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: c:\java\MeuPrograma.  Program will exit.
C:\Documents and Settings\Usuario> cd \java

C:\java>javac MeuPrograma.java

C:\java>java MeuPrograma
tecabv

Ola Araujo, estou com o mesmo problema aqui, se resolvermos por aqui ou fora vamos nos contactar aqui ok? Boa Sorte.

tecabv

Ola Araujo, é o seguinte amigo, eu conversei com um amigo aqui no forum e após varias tentativas eu consegui compilar um programa teste meu aqui.

foi assim, eu instalei meu jdk no diretorio c:\Java ok. e no meu ambiente de variaveis la no windows eu adicionei a CLASSPATH sem nada, nao coloquei parametros nenhum ai reiniciei o windows depois compilei ai deu certo, nao sei se pode dar algum erro em outros projetos mas por enquanto funciona ok. Espero que te ajude valeu até.

A

Olá tecabv

a solução foi a seguinte

digitei no prompt c:\nomedapasta

depois compilei e ja rodou…

A

Corrigindo

cd c:\nomedapasta

depois compilei e ai sim rodou

Criado 12 de janeiro de 2010
Ultima resposta 14 de jan. de 2010
Respostas 35
Participantes 10