Ajuda. Como criar pacotes?

10 respostas
manrobfer

Boa tarde a todos.

Estou usando o Bloco de Notas para entender o conceito de pacotes. O programa compila numa boa, porém se eu executar sem a instrução "package java.pacotes o programa funciona num boa, mas quando eu coloco-a gera um erro.

Eis as duas classes (arquivos distintos) que estão dentro do diretório C:\java\pacotes

classe TestaPacotes

package java.pacotes;

public class TestaPacotes 
  {
     public static void main (String args[])
        {
            System.out.println("Estudando pacotes");
         }

  }
e a class SegundoPacote
package java.pacotes;

public class SegundoPacote
{
   public static void main(String args[])
    {
        System.out.println("Segundo Pacote");
    }

}

Podem me dizer se é erro no código, variáveis de ambiente ou alguma outra coisa?

obrigado

10 Respostas

LG11

me corrijam se eu estiver errado…

vc tem aí apenas um pacote chamado “pacotes”
sendo que vc tem 2 class…

  1. TestaPacotes
  2. SegundoPacote

acho que vc so entendeu errado o que é o pacote.
o pacote é aonde vc tem todos os seus arquivos do projeto. Neste caso aí… são as 2 class que mencionei encima.
:wink:

G

ola manrobfer,

O seu arquivo deve estar dentro de um diretório seguindo a estrutura
java
—pacotes
-------TestaPacotes.java

Cada palavra na instrução package corresponde a um diretório físico.

Espero ter ajudado.

[]´s

manrobfer

LG e gilsom polito e quem mais puder ajudar.

Se eu estiver errado… Até onde eu entendei um pacote é um conjunto de classe correlacionadas.
no caso aqui eu criei duas classes uma chamda TestaPacotes e a outra SegundoPacote. Eu quero que ambas façam parte do mesmo pacote. Ai eu criei uma pasta no caminho c:\java\pacotes e colocoquei estas duas classes dentro dela. Para que eu indique para o java que isto é uma pacote não é só colocar “package java.pacotes” no início de cada uma das classes (TestaPacote e SegundoPacote)?

Ou não entedi nada mesmo?

G

fala ae manrobfer,

Cara você está certo. Só tem um detalhe no seu código, sua instrução de package começa com um diretório “java”…
“Errado”

package java.pacotes

Nenhum package deve começar com um diretório java, pois a JVM irá lançar uma java.lang.SecurityException. Para funcionar, você deve ou mudar o diretório inicial ou alterar o J do java para maiúsculo por exemplo assim:
“Certo”

package Java.pacotes

para rodar estas classes com o package alterado (por exemplo para J maiusculo), basta você ir na raíz “C:” se for windows e digitar:

java Java.pacotes.TestaPacotes

Qualquer dúvida é só postar…

[]´s

rmala_ti

Boa noite!
Aproveitando o tópico, eu tenho uma dúvida.
Em todas as classe que tento compilar, dá o seguinte erro:

Exception in thread “main” java.lang.NoSuchMethodError: main

Ai percebi, que se colocar o método main resolve o problema:
public static void main (String[] args){ }

Gostaria de saber de vocês se realmente eu preciso ter métodos main em todas as classes, ou há outra maneira de compilar? Digo isso pois em muitos os exemplos do livro da Kathy não aparece nenhuma classe com método main.
Quando realmente sou obrigado a ter métodos main?

Obrigado.

G

boa noite rmalati,

Você deve estar confundindo compilar com executar.
O comando para compilar é o “javac”, onde não necessariamente a classe a ser compilada precisa ter um método main.
Já para executar uma classe, o comando é o “java”, onde este sim necessita que a classe a ser executada possua um método main. É a partir de um método main que a jvm inicia a execução de um “programa”.

Exemplo de classe se o método main:

public class Pessoa
{
	private int idade;
	
	public int getIdade()
	{
		return idade;
	}
	public void setIdade(int idade)
	{
		this.idade = idade;
	}
}

Exemplo de classe com o método main:

public class UsaPessoa
{
	public static void main(String[] args)
	{
		Pessoa p = new Pessoa();
		p.setIdade(20);
		System.out.println("A idade é: " + p.getIdade());
	}
}

As duas classes compilam normalmente com o uso do comando javac, porém somente a classe UsaPessoa é uma classe “executável” através do comando java.

Espero ter ajudado!!

[]'s

rmala_ti
Caro gilsonpolito, nossa muito obrigado mesmo pela explicação.

Isso ajuda a explicar pq muitos códigos que tentava executar com java, mas não rodavam.

Então  pra ver se entendi.

Se tenho duas classes, uma com um método main e outra sem.

1- Devo compilar as duas classes com o javac para gerar o bytecode (.class)

2- Somente a classe que possua um método main poderá ser executada com o comando java;

É isso mesmo, ou ainda entendi errado?

Valeu.

Abração.
G

É isso ai!
No exemplo que te passei inicia-se a execução pela classe UsaPessoa (que possui o método main) e esta classe se encarrega de carregar o objeto Pessoa (que vem da classe onde não possui o método main).
Qualquer coisa poste suas dúvidas ai. O que der para ajudar…

abraços

rmala_ti

Ok, entendi mesmo.
Muito obrigado. 8)

frankyston

Muito bem, explicativo a questão de compilações com main e sem main (eu não sabia desse detalhe :D, apesar de ser iniciante java tambem).

Criado 14 de janeiro de 2008
Ultima resposta 30 de ago. de 2011
Respostas 10
Participantes 5