Duvida sobre pacotes "package" em java!

9 respostas
L

Ola,

Pessoal estou começando a aprender java e estou com dificuldades com os pacotes “package”, criei um arquivo Main.java que é responsável pelo método principal main, criei um novo arquivo CadClientes.java que é responsável pelo cadastros de clientes. O arquivo Main.java coloquei no diretório br/com/vedas e o arquivo CadClientes.java coloquei no diretório br/com/vendas/clientes.

Segue abaixo trechos do código.

Arquivo Main.java

package br.com.vendas;

    import br.com.vendas.clientes.*;

    public class Main extends JFrame
    {
    		
    	
    	public Main()
    	{
    	   //Aqui contem todo o código responsável pele interface do sistema!	
            }

            //JButton Cadastro de Clientes
    	class itClientes implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{

    			new CadClientes();
    		}
    	}
    	
    	public static void main(String[] args)
    	{
    		new Main();
    	}
    }

Arquivo CadClientes.java

package br.com.vendas.clientes;

public class CadClientes extends JFrame
{	
	public CadClientes()
	{		
           //Aqui contem código responsável pela interface do cadastro de clientes
	}
	
}

Quando vou compilar apresenta a seguinte mensagem de erro.

NPP_EXEC: "Compilador Java"
CD: C:\Projetos\Sistema\br\com\vendas
Current directory: C:\Projetos\Sistema\br\com\vendas
javac "Main.java"
Process started >>>
Main.java:6: error: package br.com.vendas.clientes does not exist
import br.com.vendas.clientes.*;
^
Main.java:58: error: cannot find symbol
			new CadClientes();
			    ^
  symbol:   class CadClientes
  location: class Main.itClientes
2 errors

Pelo que eu consegui entender ele me informa que o pacote “package” br.com.vendas.clientes não existe, a duvida é como eu devo utilzar o pacote br.com.vendas.clientes que criei ?

9 Respostas

W

Vamos imaginar que seu projeto está no diretório C:\MeuProjetos\MinhaLoja\, ok?

Seu arquivo Main.java tem que estar em:

C:\MeuProjetos\MinhaLoja\br\com\vendas\Main.java

E seu arquivo CadClientes.java tem que estar em:

C:\MeuProjetos\MinhaLoja\br\com\vendas\clientes\CadClientes.java
L

Se você está rodando o compilador javac “no braço”, precisa informar todos os arquivos .java, esse tópico pode ajudar.

L

Ola wlodomiciano,

Sim, os arquivos Main.java e CadClientes.java estão no diretório que me informou, mas mesmo assim ele continua apresentando a mensagem de erro que o pacote br.com.vendas.clientes não existe. Fiz um segundo teste no arquivo Main.java deixei da seguinte maneira

Main.java

package br.com.vendas;

    import clientes.*;

    public class Main extends JFrame
    {
    		
    	
    	public Main()
    	{
    	   //Aqui contem todo o código responsável pele interface do sistema!	
            }

            //JButton Cadastro de Clientes
    	class itClientes implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{

    			new CadClientes();
    		}
    	}
    	
    	public static void main(String[] args)
    	{
    		new Main();
    	}
    }

No arquivo CadClientes desta outra maneira

CadClientes.java

package clientes;

public class CadClientes extends JFrame
{	
	public CadClientes()
	{		
           //Aqui contem código responsável pela interface do cadastro de clientes
	}
	
}

Após eu ter feito isso ele compila normal e até executa, mas quando eu vou no botão de cadastro de clientes ele não apre a segunda tela, o botão esta da seguinte maneira.

class itClientes implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			
			//Primeiro metodo 
			cadclientes = new CadClientes();
			
			
			//Segunda maneira
			new CadClientes().setVisible(true);
			
		}
	}
L

Ola LostSoldier,

Sim eu estou usando o javac mas para isso eu criei um aquivo .bat que faz isso para mim.

@echo off
cls
echo ---------------------------------------
echo * Gerando arquivos Bytecode .class... *
echo ---------------------------------------
cd C:\Projetos\Sistema\br\com\vendas\
javac Main.java
echo -------------------------------------------------------
echo * Arquivos Bytecode .class forao gerados com sucesso. *
echo -------------------------------------------------------
echo -----------------------------
echo * Movendo arquivos bytecode *
echo -----------------------------
move *.class* C:\Projetos\Sistema\build\classes\br\com\vendas\
cd C:\Projetos\Sistema\br\com\vendas\clientes
move *.class* C:\Projetos\Sistema\build\classes\br\com\vendas\clientes
echo ------------------------------------------------
echo * Os arquivos .class forao movido com sucesso. *
echo ------------------------------------------------
echo ------------------------------
echo * Gerando executavel .jar... *
echo ------------------------------
cd C:\Projetos\Sistema\build\classes
jar cfm Projeto.jar MANIFESTO.TXT br
echo -------------------------------------------
echo * Executavel .jar foi geredo com sucesso. *
echo -------------------------------------------
echo -------------------------------------------------------------
echo * Movendo executavel jar para C:\Projetos\Sistema\build\jar *
echo ------------------------------------------------------------- 
move Projeto.jar C:\Projetos\Sistema\build\jar
echo Feito
echo -------------------------
echo * Deletando os arquivos *
echo -------------------------
cd C:\Projetos\Sistema\build\classes\br\com\vendas\clientes
del /q *.class*
cd C:\Projetos\Sistema\build\classes\br\com\vendas
del /q *.class*
echo ----------------------------------
echo * Arquivos deletados com sucesso *
echo ----------------------------------
pause
W

Eu criei aqui a mesma estrutura de pastas que você usa:

C:\Projetos\Sistema\br\com\vendas\Main.java
C:\Projetos\Sistema\br\com\vendas\clientes\CadClientes.java

Para compilar isso eu fui para a pasta C:\Projetos\Sistema e usei isso:

javac br/com/vendas/Main.java

E compilou sem problemas.

Olhando seu .bat vi que o problema está nele. Foi você mesmo quem o escreveu? Em que pasta ele fica?

Veja se consegue melhorá-lo para se adequar ao que precisa, pois o erro que encontrei já começa na linha 6 com:

cd C:\Projetos\Sistema\br\com\vendas\

Se eu fizer isso aqui, ele dá o mesmo erro que você mencionou. Quando se trabalha com pacotes, é importante compilar a partir da raiz do seu projeto, que no caso é C:\Projetos\Sistemas.

Eu criei uma pequena alternativa para o seu:

@echo off
cls

set PASTA_DESTINO=build\classes\

echo Criando pastas de destino...
if exist build rd build /s /q
mkdir %PASTA_DESTINO%

echo Compilando...
javac br\com\vendas\Main.java -d %PASTA_DESTINO%

Não é necessário usar move para mover arquivos, pois o javac permite que se especifique o destino nele mesmo.

Salvei ele em C:\Projetos\Sistema\compilar.bat

Depois de executar este pequeno script você pode ver o resultado usando:

java -cp build\classes br.com.vendas.Main
L

Ola wldomiciano,

Fiz o teste compilando a partir da raiz e funcionou, sim o arquivo .bat foi eu mesmo que escrevi irei usar as dicas que você me passou para melhora-lo.
Obrigado pela ajuda!

Só mais uma duvida sou novo aqui no GUJ como que eu faço para encerrar este tópico como resolvido ?

W

Rs… também não faço idéia.

L

Geralmente os tópicos não são encerrados, pois outras mensagens podem ser agregadas, trazendo mais conteúdo, enfim… o que percebi nesse sistema novo é que você pode escolher um post do tópico como solução (creio que essa opção só apareça para quem abriu o tópico).

L

Intendi, Muito obrigado!

Criado 2 de janeiro de 2016
Ultima resposta 3 de jan. de 2016
Respostas 9
Participantes 3