Regra da linguagem

12 respostas
H

Olá a todos,

gente sou novo em java se não o mais um dos mais novos adebto a java so peço um pouco de paciencia dos mais experientes em minha duvida
seguinte
estava eu tentando entender o conceito de package e ate que entendi certionho apliquei alguns exemplos com sucesso ate que me deparei com um problema que acredito eu não ter a ver com package em si e sim com alguma regra da linguagem vamos la

fiz dois aruivos em java um chama Main que esta em C:\Java\aulapacotes\mp\principal eoutro que chama PrimeiroPrograma que esta em C:\Java\aulapacotes\mp\classes a ideia é quando rodar o Main ele da um import no PrimeiroProgramaso que pra falar a verdade o PrimeiroPrograma compila certinho e o Main nem compilar que exibe esse erro:
can not find symbol PrimeiroPrograma pp = new primeiroPrograma()e ainda da erro que o package naum existe xo mostrar os arquivo pra vcs:

import Java.aulapacotes.mp.classes.PrimeiroPrograma;

public class Main {

public static void main(String[] args) {  
        
      System.out.println("Eu sou o seu primeiro programa.");  
         
        //criando um objeto da classe PrimerioPrograma  
        PrimeiroPrograma pp = new PrimeiroPrograma();  
          
        //chamado os metódos do objeto da classe PrimeiroPrograma  
       pp.primeiroMetodo();  
       pp.segundoMetodo();  
   }

}

package Java.aulapacotes.mp.classes.PrimeiroPrograma;

class PrimeiroPrograma {

public void primeiroMetodo() {  
       System.out.println("Executando o primeiro metodo.");  
   }  
 
   public void segundoMetodo() {  
       System.out.println("Executando o segundo metodo.");  
   }

}

desde ja agradeço futuras respostas!

12 Respostas

pedrotaek

Brother acho que o que vou dizer aki pode esclarecer a sua dúvida.

É o seguinte…

O lance ai tem haver com os modificadores de acesso (controle de acesso) public e default, citarei pra vc algumas dicas para vc sacar bem sobre!

Saca só!

Quando você declara uma classe pública, qualquer outra classe, mesmo fora do pacote pode acessar essa classe pública. Quando vc declara uma classe sem nenhum modificador de acesso, essa classe tem o modificador de acesso implicitamente, esse modificador de acesso implícito é o default. Uma classe default pode ser acessada por qualquer outra classe que pertença ao mesmo pacote, então sempre que vc declara uma classe default, ou seja, sem um controlador/modificador de acesso, vc está declarando uma classe para um nível de pacote, então uma classe default não é visível para classes que estão fora do pacote onde se encontra essa classe “padrão”.

Já uma classe public é vísivel para todas as classes em geral, mesmo se a classe que tiver tentando acessá-la estiver em um packege diferente.

Lembre-se que uma classe nó tem dois níveis de controle, o padrão (default), e o público (public).

Já os métodos, esses sim utilizam os 4 modificadores de acesso possíveis.

Exitem dois tipos de modificadores em Java.

– os de acesso

– e os não referentes a acesso.

Os não referentes em acesso vc vai aprendendo com o tempo. É qnd vc declaro algo como abstract, final, static, e po ai vai.

Agora cuidado, nunca combine abstract com final, isso é um erro de compilação.

Pode perguntar mais coisas sobre a sintaxe Java q te ajudo, estou estudando para a certificação!!!

Abração!!!

H

obrigado pela a resposta e cuidado com essa historia de “pode perguntar” que eu posso explorar bastante hehehehe brincadeira
pedrotaek xo ve se entendi o que fazer pra solucionar o meu problema entaum a classe primeiroPrograma do pacote C:\Java\aulapacotes\mp\classes deve ser public correto?
se é isso que tenho que fazer eu o fiz e continuou retornando o mesmo erro meu arquivo primeiroprograma esta assim:

package Java.aulapacotes.mp.classes.PrimeiroPrograma;

public class PrimeiroPrograma {

public void primeiroMetodo() {  
       System.out.println("Executando o primeiro metodo.");  
   }  
 
   public void segundoMetodo() {  
       System.out.println("Executando o segundo metodo.");  
   }

}

pedrotaek

Ah simmm brother!!!

é o seguinte…

Btf q esse erro ta rolando devido ao tipo de retorno do primeiroMetodo()

Quando vc chama o promeiroMetodo() na outra classe, ele aguarda um tipo de retorno. e o Método primeiroMetodo() está declarado como void, ou seja, não tem retorno. Faça o seguinte:

declare esse método assim!

public String primeiroMetodo() {

return Executando o primeiro metodo;

}

blz, agora seu método tem um tipo de retorno.

Me avise caso não tenha dado certo!!!

hehehe!

H

ô o erro ainda persiste deixa eu colocar os erros que são 3 pra tu ve que possa ser que ajude a identificar o problerma:

Main.java:1 package java.aulapacotes.mp.classes does not existe
import java.aulapacotes.mp.classes.PrimeiroPrograma;
^
Main.java:10 cannot find symbol
symbol : class PrimeiroPrograma
location : class Main
PrimeiroPrograma = pp new PerimeiroPrograma
^

Main.java:10 cannot find symbol
symbol : class PrimeiroPrograma
location : class Main
PrimeiroPrograma = pp new PerimeiroPrograma
^

sergiotaborda

henrico:
Olá a todos,

gente sou novo em java se não o mais um dos mais novos adebto a java so peço um pouco de paciencia dos mais experientes em minha duvida
seguinte
estava eu tentando entender o conceito de package e ate que entendi certionho apliquei alguns exemplos com sucesso ate que me deparei com um problema que acredito eu não ter a ver com package em si e sim com alguma regra da linguagem vamos la

fiz dois aruivos em java um chama Main que esta em C:\Java\aulapacotes\mp\principal eoutro que chama PrimeiroPrograma que esta em C:\Java\aulapacotes\mp\classes a ideia é quando rodar o Main ele da um import no PrimeiroProgramaso que pra falar a verdade o PrimeiroPrograma compila certinho e o Main nem compilar que exibe esse erro:
can not find symbol PrimeiroPrograma pp = new primeiroPrograma()e ainda da erro que o package naum existe xo mostrar os arquivo

O problema é com o Classpath.
Primeiro vc tem que definir qual é o seu classe path. Ou seja, a pasta onde o seus pacotes começam.
No seu caso o seu classpath é “C:\Java” este path não pertence à declaração package apenas aulapacotes\mp\principal e aulapacotes\mp\classes pertencem. Quando compilar e executar vc tem que dizer qual é o classepath já que a partir dele o java irá interpretar os nomes dos pacotes. Se executar o compilador em C:\Java o seu classpath é “.” (ponto) que sigifica “esta pasta onde estou”

Para saber mais pesquise por classPath

H

sergiotaborda,

mas enatum o que fazer mudar a variavel de ambiente classpath ou usar algum comando especifico pra compilar o o que??

H

o meu classpath ta em C:\java\jdk1.6.0_07\lib\tools.jar;.;
ta certo isso??

sergiotaborda

henrico:
sergiotaborda,

mas enatum o que fazer mudar a variavel de ambiente classpath ou usar algum comando especifico pra compilar o o que??

O classpath do ambiente define onde fica os programas do java ( java, javaw, javac , etc…)
O classpath da aplicação define onde ficam as classes. É este que vc tem que explicitar com a opção -classpath no compilador e no runner.


Eu recomendo fortemente que uso um IDE ( o eclipse) para entender a linguagem java. Quando entender, procure entender a plataforma java. Ai vc se preocupa em correr seus programas fora do eclipse.

H

sergiotaborda,

entendo mais ou menus o que vc quer dizer porem eu precisava que vc disesse exatamente o que fazer pois assim eu posso associar a ação com sua explicação e entender exatamente como funciona enatum
como modifico o classpath da minha aplicação poderia me mostrar isso baseado no meu codigo por favor!!!

sergiotaborda

henrico:
sergiotaborda,

entendo mais ou menus o que vc quer dizer porem eu precisava que vc disesse exatamente o que fazer pois assim eu posso associar a ação com sua explicação e entender exatamente como funciona enatum
como modifico o classpath da minha aplicação poderia me mostrar isso baseado no meu codigo por favor!!!

Vc não modifica, vc informa.
Leia isto http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html

Eu uso o eclipse só para não ter essas dores de cabeça. Não vale a pena.

H

galera funcionoua gora e o segredo era fazer assim:
javac -classpath . Java\aulapacotes\mp\principal\Main.java
java -classpath . Java.aulapacotes.mp.principal.Main

agora eu queria que um de vcs podesse me dar um breve esclarecimento sobre o que é javac -classpath e java -classpath e assim o java ou a maquina virtual java vem com uma serie de comandos pra ser usado na linha e comandos é?

sergiotaborda

henrico:
galera funcionoua gora e o segredo era fazer assim:
javac -classpath . Java\aulapacotes\mp\principal\Main.java
java -classpath . Java.aulapacotes.mp.principal.Main

agora eu queria que um de vcs podesse me dar um breve esclarecimento sobre o que é javac -classpath e java -classpath e assim o java ou a maquina virtual java vem com uma serie de comandos pra ser usado na linha e comandos é?

Lei o link que passei antes ele explica tudo isso. javac é o compilador e java é o runner ( a jvm) . Sim eles têm vários parametros para serem usados na linha de comandos.

Criado 29 de agosto de 2008
Ultima resposta 1 de set. de 2008
Respostas 12
Participantes 3