Importar classe sem package

16 respostas
Link_pg

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

16 Respostas

Marky.Vasconcelos

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

LPJava

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:

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

nicholas.bittencourt

Até onde sei...

import TesteFora;

public class Teste1 {

    private TesteFora a;
 
}

Só não testei pra ver se funciona...

Zeed01

TesteFora seria a classe sem pacote ?

Testei e da erro de compilação.

francislon

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

LPJava

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

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…

Zeed01

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

LPJava

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

Zeed01

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 ?

Link_pg

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

Link_pg

ah, aquilo ali ta em Using Package Members

Abraços

nicholas.bittencourt

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.

osbornehell

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());

}

}
osbornehell

estou na duvida mesmo

L.Bach

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

Criado 13 de junho de 2007
Ultima resposta 20 de dez. de 2008
Respostas 16
Participantes 8