Como funciona o metodo package

Olá pessoal eu gostaria de saber como funciona o metodo package que eu tento compilar um codigo aqui e não consigo tipo assim olha só

package livrojava.ch05;
import java.io.*;
public class TransformadaRP extends Object
{
      public void ConverteRP()
      {
         codigos. . .
       }
}

Esse é o não executavel ou seja o codigo literal no executavel é que eu não consigo nesse aqui

import livrojava.ch05.TransformadaRP;
public class ConversaoRP
{
     public static void main ( String arg[ ] )
     {
             TransformadaRP transf = new TransformadaRP( );
              transf.ConverteRP( );
     }
}

Nesse codigo não consigo sempre da um erro na linha da importação de livrojava.ch05 e da TrasnformadaRP se alguém souber como funciona esse package por favor me ajude e me diga como faço para que ele funcione muito obrigado … :?:

método package ?? :roll:

o q vc chama de método package ?

pra mim package é uma palavra reservada do java , que indica
o pacote da classe, deve ser a primeira instrucao do codigo, se houver
package…

cara seu codigo aparenta estar correto … verifique a forma que vc ta
compilando esse seu codigo…

Oi Edmauro,

primeiramente, voce nao precisa extender de Object explicitamente. Ou seja, fazer

public class TransformadaRP extends Object

eh a mesma coisa que

public class TransformadaRP

Em relacao a sua duvida, package nao eh um metodo, mas sim o “endereco” da sua classe. O nome do pacote representa uma estrutura fisica de diretorios, onde a classe devera estar localizada. No seu primeiro codigo, a declaracao

package livrojava.ch05;

informa que o pacote atual eh o “livrojava.ch05”, que precisa necessariamente estar no diretorio “livrojava\ch05”.
Ou seja, se voce esta testando seus programs em Java no diretorio “c:\java”, a seguinte estrutura de diretorios deve existir:

c:\java\livrojava\ch05

onde, entao, o arquivo TransformadaRP.java deve estar localizado.

Para usar as classes, voce precisa importar (import) elas, caso estejam em pacotes diferentes. Ou seja, se voce tem uma classe no pacote “meu.sistema” e deseja usar a TransformadaRP, voec deve fazer o import:

import livrojava.ch5;

O seu segundo exemplo esta com o import corretamente, porem nao fica claro qual eh o pacote da classe ConversaoRP. Se for o mesmo, o import nao eh necessario.

O que voce precisa prestar bastante atenaco eh na hora de compilar o programa. Voce sempre deve estar na raiz dos pacotes, e nao dentro deles, caso contrario o compilador nao conseguira encontrar as dependencias. Portando, considerando que voce tem os pacote “livrojava.ch05” e “meu.sistema”, a seguinte estrutura de diretorios deve existir em disco:

c:\java\livrojava\ch05
c:\java\meu\sistema

com os respectivos .java em cada um deles. Para compilar, voce precisa estar no diretorio “c:\java”, e invocar o javac assim:

cd c:\java
javac livrojava\ch05\*.java
javac meu\sistema\*.java

Para executar o programa, fique no c:\java e faca assim:

java livrojava.ch05.NomeDaClasse

Note que agora usamos a mesma notacao usada nos imports, ao contrario da hora de compilar, quando nos referimos ao nome dos diretorios. Eh muito importante prestar atencao nesse detalhe.

Basicamente eh isso :wink:

Rafael

depois desse tutorial do rafael ficou facil :slight_smile:

Olá Rafael muito obrigado pela explicação então quer dizer que o que eu tenho que fazer é cria uma pasta com o nome livrojava.ch05 não é e colocar o arquivo classe do TransformadaRP dentro desta pasta não é vou tentar fazer assim é que eu sou iniciante mesmo em programação e decidie começar com java vou tentar fazer qualquer duvida sobre isso eu faço mais uma pergunta ? ?

Sim, eh isso mesmo :slight_smile:

Rafael

:? :?
Olá Rafael desculpe pela pergunta que eu acho que vc vai achar um besteira mas ai vai ele, eu não estou conseguindo executar o programa compilar eu consegui graças a sua dica mas para executar eu estou tentando fazer assim e nã estou conseguindo esta aparecendo o seguinte erro, olha será que eu estou digitando da forma certa a chamada dele:

C:\Edmauro>java livrojava.ch05.ConversaoRP

Exception in thread “main” java.lang.NoClassDefFoundError: livrojava/ch05/Conver
saoRP (wrong name: ConversaoRP)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Agradeceria mais uma vez por essa dica se vc poder me ajudar :wink:

Rode assim:

C:\Edmauro>java -cp . livrojava.ch05.ConversaoRP 

repare bem: depois do “-cp” tem um “ponto”.

Rafael

Boa…

Eu tava com a mesma dúvida dele, mas fiz o seguinte: compilei pelo DOS e copiei o .class, colokei no diretório e consegui fazer o import.
Estranho que o código que colokei num bloco de notas p compilar, é o mesmo que no Eclipse sublinha a instrução package…
Segue o código:


package com.deitel.jhtp04.ch08;

import java.text.DecimalFormat;

public class Time1 {
	
	private int hora;
	private int minutos;
	private int segundos;
	
	public Time1(){
		
		setTime(0, 0, 0);
	}
	
	public void setTime(int h, int m, int s){
		
		hora = ((h >= 0 && h < 24) ? h : 0);
		minutos = ((m >=0 && m < 60) ? m : 0);
		segundos = ((s >= 0 && s< 60) ? s : 0);
	}
	
	public String toUniversalString(){
		
		DecimalFormat doisDigitos = new DecimalFormat("00");
		
		return doisDigitos.format(hora) + ":" + 
			   doisDigitos.format(segundos) + ":" + 
			   doisDigitos.format(segundos);
	}
	
	public String toString(){
		
		DecimalFormat doisDigitos = new DecimalFormat("00");
		
		return ((hora == 12 || hora == 0) ? 12 : hora % 12) + ":" + 
				doisDigitos.format(minutos) + ":" + 
				doisDigitos.format(segundos) + 
				(hora < 12 ? "AM" : "PM");				 
	}

}

No Desktop (foi o local onde salvei o .java) ele criou uma estrutura de diretórios.
Desde já agradeço a ajuda