Capitulo 10 Kathy Sierra!{dúvida em quase tudo ...}

29 respostas
Raff

Caras eu não consigo entender esse capitulo :frowning: eu não entendo -d, -D, -cp… (- classpath)
por favor alguem passa um codigo bem fácil sobre ele para mim entender eu não entendo !!!

29 Respostas

G

Calma calma calma

a opção -d é o seguinte

javac -d class System\S1.java

Compila a classe S1 do pacote System. Normal até aqui. Com a opção -d ele coloca o arquivo S1.class dentro do diretório
class\System\S1.class (ele cria um dir para os pacotes dentro do diretório class). -d de DESTINATION ou destino.

package System;


import java.util.*;


public class S1 {

	public static void main(String[] args){
		Properties p = System.getProperties();
		p.setProperty("GK","is the man"); //ignorem a frase :)
		p.list(System.out);

	}
	
}

Esse programa cria um system property chamado GK com valor “is the man”. A opção -D cria um system property via linha de comando. faça o teste e execute java -Dteste=teste System.S1

Na lista de propriedades do sistema você vai ver tanto a propriedade teste quanto a propriedade GK e seus respectivos valores

[]s
Gunnar

Raff

por que eu tenho que compilar usando java -Dteste=teste System.S1 isso que eu não to entendo !

G

A opção -cp (classpath) é uma opção para você dizer à JVM ONDE ela tem que procurar pelos arquivos .class necessários à sua aplicação.

Coloque esse código em um diretório qualquer.

public class T{

	public static void main(String[] args){
		new A();
		System.out.println("A");
		System.out.println("T");

	}

}

Dentro do diretório onde você criou esse arquivo crie um subdiretório chamado “a” e coloque esse código lá dentro

public class A{}

Compile a classe A

Agora tente compilar a classe T. Não compila.

Agora digite javac -cp a *.java no diretório onde esta o arquivo T.java
você vai reparar que agora compilou e sem a inclusão de import no código. Isso porque a opção cp diz à JVM onde o arquivo A.class tem que estar.

[]s
Gunnar

G

Essa forma de EXECUTAR é quando você quer criar uma propriedade no sistema via linha de comando. Se você tiver uma aplicação que registra ou lê algo do sistema isso é uma forma de criar a propriedade. Outra forma é criar via código, igual foi feito com a propriedade GK.

[]s
Gunnar

Raff

tentei executar java -Dteste=teste System.S1
e não conseguir da erro falando que não encontro o main
o que se que e´

G

Raff:
tentei executar java -Dteste=teste System.S1
e não conseguir da erro falando que não encontro o main
o que se que e´

Você colocou o arquivo S1.java dentro do diretório System? Porque a classe S1 pertence ao pacote System. Para isso o diretório superior tem que ser System.

[]s
Gunnar

Raff

nossa eu não sei por que eu to com tanta dificuldade nisso cara !! tah muito dificil para mim!

Raff

Por favor pessoal me ajude igual o gunnar fez :smiley: eu não to conseguindo entender :slight_smile: valew !

G

Raff

Explica denovo o que você esta com dificuldade…

[]s
Gunnar

Raff

eu não consigo entender como usar -D… e isso -d e tbm o -cp … por mais que você me explicou gunnar eu não to conseguindo visualizar isso muito bem :frowning: perdão a ignorancia!

Gauss

Tenta “compilar” com linha de prompt e vc vai entender -.-

anderson.bonavides

Ralf o capitulo 10 é meio obscuro mesmo. Aconselho tu ir pra prática q vai te clarear. Ta acontecendo isso comigo tbm. Mas já deu uma clareadazinha. Mas não muito.

S

-D define uma propriedade.
-d define o diretório onde serão criados os .class
-cp define o classpath

Qual a dificuldade?

Raff

shuenemann é que eu nunca tinha usado isso antes cara mas eu to apanhando !

LPJava

hehe eu fiz o exame sem saber isso… apenas tentei aprender o -classpath e o -d pq sabia que ia aparecer umas 2 questoes a respeito… e tb a parte teorica q tem nesse cap sobre jar.

Bom -d significa destino aonde seu .class vai. So aprendi isso apos o exame estudando servlet e jsp… head first… auhuha

um exemplo:

lei isso assim: coloque meu .class dentro do diretorio classes que está um nivel antes.

hieraquia:

c:\exemplo\classes
c:\exemplo\src

no prompt vc deve estar em
c:\exemplo
e digitar:

agora a respeito do classpath eu acho ele meio confuso ate hj e prefiro configurar as variaveis de ambiente… no exame eu chutei…

flw! espero ter ajudado

Raff

ajudo sim cara :slight_smile: eu vou fazer isso tbm chuta :slight_smile: !!!

Raff

melhor coisa :smiley:

S

Tudo bem, é que você não diz exatamente o que não entendeu :mrgreen:

aneri

Olá galera!!!

Alguém tem interresse em trocar o livro,
Java: Como Programar - HARVEY M. DEITEL & PAUL J. DEITEL 6 edição (novo) , pelo livro de certificação SCJP: Certificação Sun para Programador Java 5 - Guia de Estudo?

Estou precisando para certificação.

Valeu!

Raff

eu to com muita duvida mesmo em classpath pessoal se alguem puder me ajudar do basico mesmo eu agradeceria !!!Obrigado !

G

Raff
To aqui pra te ajudar
Faz o seguinte…tenta executar os exemplos que eu já postei. Ai se você não conseguir você posta aqui TUDO o que você fez para executar os meus exemplos. Tudo mesmo, diretório onde você colocou os arquivos etc.
Ai eu vou te explicando o que você estiver errando, anima?

[]s
Gunnar

Raff

blza eu vou fazer cara isso agora mesmo !!

Raff

eu não consegui entender aquele que você usar o flag -D
eu faço igual você mas da um erro assim olha…
Exception in thread “main” java.lang.NoClassDefFoundError: System/S1

G

Raff:
eu não consegui entender aquele que você usar o flag -D
eu faço igual você mas da um erro assim olha…
Exception in thread “main” java.lang.NoClassDefFoundError: System/S1

Beleza.
O S1 tem que estar dentro de um diretório chamado System. Ou você pode também retirar a declaração de package do arquivo.
E você tem que chamar a linha de comando javac ou java no diretório superior ao diretório System. Entendeu?
Coloca pra mim o diretório que você colocou o arquivo S1.java

abraços
Gunnar

Raff

entaun eu me confundi eu não coloquei ele em diretorio nenhum !
eu vou arrumar!

Raff

Gunnar agora deu certo!

G

Legal Raff!!!

Agora dá uma olhada no código e vê se você entende o uso do -d , do -D e do -cp
:slight_smile:

[]s
Gunnar

F

LPJava:
hehe eu fiz o exame sem saber isso… apenas tentei aprender o -classpath e o -d pq sabia que ia aparecer umas 2 questoes a respeito… e tb a parte teorica q tem nesse cap sobre jar.

Bom -d significa destino aonde seu .class vai. So aprendi isso apos o exame estudando servlet e jsp… head first… auhuha

um exemplo:

lei isso assim: coloque meu .class dentro do diretorio classes que está um nivel antes.

hieraquia:

c:\exemplo\classes
c:\exemplo\src

no prompt vc deve estar em
c:\exemplo
e digitar:

agora a respeito do classpath eu acho ele meio confuso ate hj e prefiro configurar as variaveis de ambiente… no exame eu chutei…

flw! espero ter ajudado

Ei e tu sabes o qual a diferenca de um comonado do tipo
javac -d classes com/Main.java
e outro
javac -d… classes com/Main.java???
-d…???

Raff

eu não alguem poderia explicar ?

Criado 10 de janeiro de 2008
Ultima resposta 25 de jan. de 2008
Respostas 29
Participantes 8