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
vc tem aí apenas um pacote chamado “pacotes”
sendo que vc tem 2 class…
TestaPacotes
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.
G
gilsonpolito
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
gilsonpolito
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”
packagejava.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”
packageJava.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:
javaJava.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
gilsonpolito1 like
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”.
É 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).