Importar classe sem package

Ola!
Eu to com uma duvida bobinha, mas que não encontrei resposta mesmo depois de uma googleada…
Como obter uma referencia à uma classe que está fora do package atual?

ex.: Temos a seguinte estrutura de arquivos

TesteFora.java //classe à qual deseja-se obter uma referencia (sem package)
+pckteste1 //package 1
Teste1.java
+pckteste2 //package2
Teste2.java

Como obter uma referencia de TesteFora na classe Teste1 ?

Abraços

Você já tentou referencia-lá diretamente?? não sei se funciona fora do package só deixei meu main

assim cara se vc nao criar um package para sua aplicacao ele vai ta em um pacote default… tipo:

“eu nao criava package, mais tinha uma pasta assim: C:\Estudo\ e aqui todos meus arquivos .java”
Mas quando criava minha class nao definia nenhum package… a essencia ai para vc instancia essa classe em outro package ta no nivel de acesso… da class se declarar como public pode instanciar aonde quiser… se declarar como default… apenas naquele package… aonde a class foi criada.

se eu tiver errado alguem me corrige… :smiley:

Amigos bom dia !

Achei muito interessante a pergunta…

Fiz um teste como o LPJava disse e não funcionou.

Criei uma classe sem declaração de pacote (pacote default) e outra em um pacote (pacote guj) e não consegui referenciar a primeira classe a partir da segunda.

Inclusive no NetBeans, quando você pede para mover uma classe do pacote default para outro ele da um aviso de que não será mais possível importar classes do pacote default…

Bom… resumindo não sei como fazer referência à classes do pacote default a partir de classes de outro pacote.

:smiley:

[]s

Até onde sei…

[code]import TesteFora;

public class Teste1 {

private TesteFora a;

}[/code]

Só não testei pra ver se funciona…

TesteFora seria a classe sem pacote ?

Testei e da erro de compilação.

Realmente não compila…
Alguém sabe a solução?
Será que não tem como importar o pacote padrão?

[quote=Zeed01]Amigos bom dia !

Achei muito interessante a pergunta…

Fiz um teste como o LPJava disse e não funcionou.

Criei uma classe sem declaração de pacote (pacote default) e outra em um pacote (pacote guj) e não consegui referenciar a primeira classe a partir da segunda.

Inclusive no NetBeans, quando você pede para mover uma classe do pacote default para outro ele da um aviso de que não será mais possível importar classes do pacote default…

Bom… resumindo não sei como fazer referência à classes do pacote default a partir de classes de outro pacote.

:smiley:

[]s[/quote]

faz ai no notepad… cria uma pasta e poe a class dentro desta pasta… porem no codigo fonte nao informe nenhum package…
depois criei um package e poe a class e tenta instancia… a class sem package… class o acesso da class sem package deve ser default…

LPJava, Pra mim ficou meio confusa a sua proposta, vou tentar explicar o que eu fiz.

Criei a classe abaixo no diretorio D:\Java

public class ImprimeTexto {
    public ImprimeTexto() {
        System.out.println("Imprime Texto");
    }

    public static void main(String[] str){
	System.out.println("Imprime texto - main");
    }
    
}

Compilou com sucesso.

Criei a pasta D:\Java\teste
Criei a classe abaixo dentro da pasta D:\Java\teste

package teste;

public class TestaImprimeTexto {
    
    public static void main(String[] args) {
        ImprimeTexto it = new ImprimeTexto();
    }
    
}

Tentei compilar e deu o erro:

D:\JAVA\TESTE>javac TestaImprimeTexto.java
TestaImprimeTexto.java:6: cannot resolve symbol
symbol  : class ImprimeTexto
location: class teste.TestaImprimeTexto
        ImprimeTexto it = new ImprimeTexto();
        ^
TestaImprimeTexto.java:6: cannot resolve symbol
symbol  : class ImprimeTexto
location: class teste.TestaImprimeTexto
        ImprimeTexto it = new ImprimeTexto();
                              ^
2 errors

Era isso que você tinha em mente ?
Se puder explicar melhor…

Obrigado.

[]s

estranho… eu quando tava aprendendo… la usando notepad… fazia… isso e nunca tive problemas…

Sem solução então ?

Ou seja, uma classe do pacote default (sem declaração de pacote) não pode ser instanciada por outra classe fora deste pacote ?

isso é incrivel… no material da sun eles dizem algo que não consegui compreender completamente

eu entendi que ele importa automaticamente o java.jang e o pakage atual, mas o (1) eu não entendi… “(1) the package with no name”. package sem nome ? seria o default package ?

Abraços

ah, aquilo ali ta em Using Package Members

Abraços

Acho que é o defaut package mesmo… Pense só comigo…

Se você fosse importar todas as classes do default, o import ficaria mais ou menos assim…

import *;

Se não pudesse usar esse codigo acima, teria que importar classe a classe… Então faz sentido o que a Sun fala no manual dela.

E Zeed01, na hora de compilar, tente executar o javac a partir da package default ou coloca-la no classpath. Do jeito que você esta fazendo, eu entendo que o compilador nao esta vendo a sua classe porque ela esta em outra pasta.

ola pessoal estou começando a estudar java,
estou com algumas duvidas se poderem me ajudar.
minha duvida porque esta dando erro

import Medico; //da erro
[color=red] [/color]
o codigo mais esclarecido

//Classe Pessoa
public class Pessoa{
//atributos
String nome;
String endereco;
//métodos
public void setNome(String newNome){
this.nome = newNome;
}
public void setEndereco(String newEndereco){
this.endereco = newEndereco;
}
public String getNome(){
return this.nome;
}
public String getEndereco(){
return this.endereco;
}
public void andar(){
System.out.println(“Estou andando”);
}
}

//Classe Medico
public class Medico extends Pessoa{
//atributos
String horário;
String especialidade;
//métodos
public void setHorario(String newHorario){
this.horario = newHorario;
}
public void setEspecialidade(String newEspecialidade){
this.especialidade = newEspecialidade;
}
public String getHorario(){
return this.horario;
}
public String getEspecialidade(){
return this.especialidade;
}
}

//Classe Clinica
import java.util.Scanner;
[b]import Medico; //erro

public class Clinica{

public static void main(String[] args){
Medico novoMedico = new Medico();
Scanner scn = new Scanner();

System.out.println("#####Cadastro Clinico#####");
System.out.println(“Entre com o nome do médico:”);
novoMedico.setNome(scn.nextLine());
System.out.println(“Entre com o endereço do médico:”);
novoMedico.setEndereco(scn.nextLine());
System.out.println(“Entre com o horario do médico:”);
novoMedico.setHorario(scn.nextInt());
System.out.println(“Entre com a especialidade do médico:”);
novoMedico.setEspecialidade(scn.nextLine());

System.out.println(“Nome do médico:”+novoMedico.getNome());
System.out.println(“Endereço do médico:”+novoMedico.getEndereco());
System.out.println(“Horário do médico:”+novoMedico.getHorario());
System.out.println(“Especialidade:”+novoMedico.getEspecialidade());
}
}

estou na duvida mesmo

Colega, crie um outro tópico para tirar sua dúvida; não utilize o tópico existente.
Além disso, necessitamos saber qual o erro que está ocorrendo, para que seja possível o auxílio.
Ah, e use as tag codes tbm :slight_smile:

Abraços