Erro usando import util.*;

7 respostas
E

Olá pessoal.
Por que a classe abaixo dá erro de compilação?

classe Teste=============================

import util.*; public class Teste{ public static void main(String[] args){ new Teste01().imprime("teste");} }

mensagem de erro=========================
Teste.java:4: cannot access Teste01
bad class file: .\Teste01.java
file does not contain class Teste01

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Reifel[/color][/size] :joia:

7 Respostas

S

O que é esse Teste01 ???
Se for uma classe ai voce faz

import java.util.*;

public class Teste
{ 
      public static void main(String[] args)
      { 
            Teste01 x  = new Teste01();
             x.imprime("teste");
       } 
}

Agora se você Não tem essa classe Teste01 então você salvou seu arquivo aí com o nome Teste01 e não pode cara, você tem que colocar o nome do arquivo que contém o método public static void main(String[] args) com o mesmo nome da classe, no seu caso seria Teste.java e aí o seu código ficaria

import java.util.*;

public class Teste
{ 
      public static void main(String[] args)
      { 
            System.out.println("teste");
       } 
}
E
Anexei as duas classes que estou usando.

As duas classes estão no diretório c:\meudir

Quando troco import util.<em>;

por import util.Teste01;

 funciona.   Quero entender como se usa

asterisco (</em>) na cláusula import do java.
//classe Teste ===============================

import util.*;

public class Teste{

public static void main(String[] args){

new Teste01().imprime(teste);}

}
//classe Teste01 =============================

package util;

public class Teste01{

public void imprime(String s){System.out.println(s);}

}
J

quando você coloca * no import significa que ficarão disponiveis todas as classes diretamente dentro daquele pacote…

ex.:

//todas as classes diretamente dentro de java.util
import java.util.*;

//todas as classes diretamente dentro de javax.swing
import javax.swing.*;

quando eu digo diretamente dentro do pacote, significa que nao importa as classes dos subpacotes…

J
<blockquote><div class="quote-author">evandrolnr:</div>Anexei as duas classes que estou usando.

As duas classes estão no diretório c:\meudir

Quando troco import util.<em>;

por import util.Teste01;

 funciona.   Quero entender como se usa

asterisco (</em>) na cláusula import do java.
//classe Teste ===============================

import util.*;

public class Teste{

public static void main(String[] args){

new Teste01().imprime(teste);}

}
//classe Teste01 =============================

package util;

public class Teste01{

public void imprime(String s){System.out.println(s);}

}</blockquote>

Testei aqui do jeito que você colocou e deu certo.

Arquivos:

c:\java\Teste.class

c:\java\util\Teste01.class

Com relação aos import, o import util.* não só pega o Teste01.class como todas as outras classes dentro do util.

Bom, agora que vi que o seu erro foi de compilação heheh

Seguinte, primeiro você compila o Teste01.java
Eu estava no c:\java\ e fiz javac util/Teste01.java
Em seguida javac Teste.java

E

Temos progresso: segui as recomendações e a mensagem de erro mudou.
Ao invés de “file does not contain class Teste01”
passou para “class file contains wrong class: util.Teste01”

J

Supondo que você esteja usando a pasta c:\java\

Deixe o arquivo Teste.java em
c:\java\

E o arquivo Teste01.java em
c:\java\util\

Estando na linha de comando no c:\java\ faça
javac util/Teste01.java

Em seguida
javac Teste.java

fonte do Teste01.java:

package util; public class Teste01{ public void imprime(String s){System.out.println(s);} }

fonte do Teste.java:

import util.*; public class Teste{ public static void main(String[] args){ new Teste01().imprime("teste");} }

E

Demorou, mas agora consegui compilar tudo.
Obrigado,
Evandro

Criado 1 de agosto de 2005
Ultima resposta 4 de ago. de 2005
Respostas 7
Participantes 4