Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico sobre pacotes
  2. Importação de pacote nativo
  3. Criando um pacote do usuário
  4. Entendo a hierarquia de pastas
  5. Criando arquivos .java
  6. Importando package do usuário
  7. Pacotes nativos mais comuns

Para acompanhar esta parte do tutorial é necessário instalar umas das IDEs listadas em Java Básiso: Introdução.

A leitura sobre P.O.O também é recomendada.

Pacotes, em Java, são uma forma de agrupar classes, interfaces e outros recursos em um local. Assim, temos alguns benefícios como reuso, encapsulamento, controle de acesso e outros.

Em vários exemplos anteriores fizemos a importação de alguns pacotes, como por exemplo, java.lang:

Exemplo 1
import java.lang.Integer

A classe Integer contida em java.lang nos permite ter acesso a vários métodos para manipulação do tipo de dado Integer.

Abaixo são mostrados alguns exemplos de importação de recursos de um pacote, subpacote. O uso do comando import deve ser feito no topo da classe que irá consumir os recursos importados.

Sintaxe
import nome_pacote;
import nome_pacote.nome_subpacote.nome_classe;
import nome_pacote.*;
Onde:
nome_pacote: nome de um pacote para importação
sub_pacote: Um dos subpacotes contidos em nome_pacote para importação
*: Usado para importar todos os sub_pacotes de nome_pacote
Exemplo 2
import java.lang.Integer
Exemplo 3
import java.io.*

Nesta parte do tutorial, vamos aprender a como criar e utilizar nossos próprios pacotes. A criação de um pacote é feita utilizando a sintaxe abaixo no topo de nossos arquivos .java.

Sintaxe
package nome_pacote;

Antes de adentrarmos na criação de pacotes, precisamos entender onde e como organizar a estrutura de pastas onde nossos pacotes ficarão armazenados fisicamente.

Antes de criarmos nossos pacotes, primeiro precisamos entender como a estrutura de arquivos utilizada pela linguagem Java para armazenar nossos pacotes. Uma hierarquia como exemplo é mostrada abaixo:

Exemplo 4
pasta_raiz\
	pasta_pacote1\
		pasta_subpacote1\
			subpacote_pacote1.java
	pasta_pacote2\
		pasta_subpacote2\
                subpacote_pacote2.java
	pasta_pacoteN\
		pasta_subpacoteN\
Onde:
pasta_raiz: Local onde ficam os arquivos Main.java e classes que não possuem pacotes.
pasta_pacote1…N: Subpastas onde nossos pacotes serão armazenados para  
pasta_subpacote1…N: Subpastas onde nossos subpacotes serão armazenados.

Abaixo, alguns exemplos de importação de pacotes utilizando a hierarquia de pastas discutidas. É importante lembrar de que são apenas exemplos de nomenclatura que podem mudar de acordo com a necessidade.

Exemplo 5
//pasta_pacote1 
import nome_pacote1
Exemplo 6
//pasta_pacote_1/subpasta_pacote1
import mone_pacote1.subpacote1
Exemplo 7
import nome_pacote.subpacote.*
import nome_pacote.*

Agora que já entendemos a organização básica das pastas para nossos pacotes, vamos criar as pastas pacote1 e pacote2.

Exemplo 8
pasta_raiz/
	pacote1/
	pacote2/

Em cada pasta exemplificada acima, vamos criar os arquivos pertencentes aos nossos pacotes pacote1 e pacote2 respectivamente.

Exemplo 9
pacote1/
    Classe1.java
pacote2/	
	Classe2.java

Na Classe1 vamos informar que essa classe pertence ao pacote pacote1, como o uso da palavra reservada package:

Exemplo 10
package pacote1;

public class Classe1{
    public int atributo;
    
    public void metodo(){
        System.out.println("Classe1 > pacote1");
    }
}
Saída
-

O mesmo será feito para o arquivo Classe2.java em sua própria pasta como mostrado no exemplo 1 acima sobre hierarquia das pastas dos pacotes.

Exemplo 11
package pacote2;

public class Classe2{
    public int atributo;
    
    public void metodo(){
        System.out.println("Classe2 > pacote2");
    }
}
Saída
-

A importação dos pacotes é feita como nos exemplos de importação anteriores utilizando a palavra reservada import. O import deve ser utilizado na classe onde vamos utilizar os pacotes criados. No exemplo abaixo, vamos utilizá-los no arquivo Main.java.

Sintaxe
import nome_pacote;
Exemplo 12
import pacote1;
import pacote2;

public class Main
{
	public static void main(String[] args) {
	    
	    Classe1 c1 = new Classe1();
	    c1.metodo();
	    
	    Classe2 c2 = new Classe2();
	    c2.metodo();

	}
}
Saída
Classe1 > pacote1
Classe2 > pacote2
  1. 23/07/2025 - revisão 3 - Correções pontuais, target de links; ajuste em sintaxes
  2. 24/09/2024 - revisão 2 - ajustes pontuais
  3. 06/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  4. 04/09/2023 - versão inicial