Ir para conteúdo
Fórum Script Brasil
  • 0

Iniciando


hlegius

Pergunta

Pessoal,

Estou querendo começar a aprender um pouco sobre Java...

Já baixei o compilador instalei defini as variaveis de ambiente...

Daí tentei rodar isso:

//aplicativo que imprime a mensagem "Bem-vindo" em modo texto

public class Welcome

{

  //método main inicia a execução do aplicativo Java

  public static void main(  )

  {

    //imprime a mensagem e pula uma linha

    System.out.println("Bem-Vindo");

  }//fim do método main

}//fim da classe Welcome

Daí eu tentei rodar:

C:\root\java\bin>javac H:\home\java\Welcome.java

C:\root\java\bin>java H:\home\java\Welcome

Exception in thread "main" java.lang.NoClassDefFoundError: H:\home\java\Welcome

C:\root\java\bin>

Ele compila e cria o arquivo Welcome.class mas não roda...

O que eu estou fazendo de errado ?

até... smile.gif

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Seria assim?

//aplicativo que imprime a mensagem "Bem-vindo" em modo texto

public class Welcome

{

  //método main inicia a execução do aplicativo Java

  public static void main( String args[] )

  {

    //imprime a mensagem e pula uma linha

    System.out.println("Bem-Vindo");

  }//fim do método main

}//fim da classe Welcome

Olha o que ele me retorna:

C:\root\java\bin>javac H:\home\java\Welcome.java

C:\root\java\bin>java H:\home\java\Welcome

Exception in thread "main" java.lang.NoClassDefFoundError: H:\home\java\Welcome

C:\root\java\bin>

O que poderá ser agora?

até... smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Agora não tem nada de errado. Você experimentou apagar o Welcome.class antes de compilar novamente? Normalmente não é necessário, mas foi a única coisa que imaginei no momento.

Ops, tem outra coisa que pode ser sim. Onde o arquivo .class está sendo gerado? Na pasta de trabalho (C:\root\java\bin) ou na pasta do arquivo .java (H:\home\java)? Se for na pasta de trabalho você só tem que digitar "java Welcome" e não o caminho todo.

Abraços,

Graymalkin

Editado por Graymalkin
Link para o comentário
Compartilhar em outros sites

  • 0

Opa

bem eu deletei o arquivo Welcome.class e fiz novamente:

C:\root\java\bin>javac H:\home\java\Welcome.java

C:\root\java\bin>java H:\home\java\Welcome

Exception in thread "main" java.lang.NoClassDefFoundError: H:\home\java\Welcome

C:\root\java\bin>

Retorna a mesma coisa...

O arquivo é criado aonde o arquivo foi chamado H:\home\java

até... smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz o teste aqui e aconteceu a mesma coisa. Descobri então qual é o problema: java.exe espera o nome de uma classe, que será procurada no diretório de trabalho, se outro não for especificado. Portanto, ao digitar "java H:\home\java\Welcome" o interpretador está procurando por uma classe chamada "H:\home\java\Welcome" e não somente "Welcome". Para fazer dessa maneira é preciso especificar os diretórios de pesquisa de classes, o que seria feito da seguinte maneira:

java -cp H:\home\java Welcome

Dessa maneira está se especificando que as classes devem ser procuradas na pasta "h:\home\java" e que o nome da classe a ser executada é "Welcome". Apesar de parecer estranho, de fato o caso tem sentido, uma vez que uma classe não precisa necessariamente ter um arquivo com seu nome (daí a procura por classes e não por arquivos).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Putz... essa foi dificil hein... hehe...

Funcionou aki dessa forma Graymalkin, muito obrigado...

A propósito, não teria como definir um diretório de trabalho?

Sim, você pode definir uma variável de ambiente, chamada CLASSPATH, com o diretório de trabalho. Se você fizer...

set CLASSPATH=h:\home\java

... só vai precisar digitar "java Welcome" para executar o programa.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Não deu certo...

hehe... coloquei o CLASSPATH para h:\home\java e não deu ...

Estranho... aqui dá certo:

C:\>java Teste
Exception in thread "main" java.lang.NoClassDefFoundError: Teste

C:\>set CLASSPATH=c:\temp

C:\>java Teste
Bem-Vindo

C:\>

A primeira tentativa foi antes do set CLASSPATH=c:\temp. Você digitou essa linha sem dar espaços entre o "="? Porque não pode ter espaços ali não (tem que ser tudo junto assim como está acima).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo...até meio tempo de jogo ... hehe

C:\>set CLASSPATH=h:\home\java\

C:\>java  loops

C:\>java  -cp estudos\control loops

Exception in thread "main" java.lang.NoClassDefFoundError: loops

Sakou o que houve ?

Se eu deixar o arquivo em H:\home\java ele executa

Agora se tiver dentro de subpastas dentro de java ele não executa ...

Não teria como contornar isso ?

Agradescido pela ajuda

até... smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

De fato, ele não procura em subdiretórios. O que você pode fazer é:

set CLASSPATH=h:\home\java

java  -cp %CLASSPATH%\estudos\control loops
Ou então adicionar ambas as pastas na classpath:
set CLASSPATH=h:\home\java;h:\home\java\estudos\control

java loops

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...