Caras eu não consigo entender esse capitulo
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 !!!
Capitulo 10 Kathy Sierra!{dúvida em quase tudo ...}
29 Respostas
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
por que eu tenho que compilar usando java -Dteste=teste System.S1 isso que eu não to entendo !
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
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
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´
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
nossa eu não sei por que eu to com tanta dificuldade nisso cara !! tah muito dificil para mim!
Por favor pessoal me ajude igual o gunnar fez
eu não to conseguindo entender
valew !
Raff
Explica denovo o que você esta com dificuldade…
[]s
Gunnar
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
perdão a ignorancia!
Tenta “compilar” com linha de prompt e vc vai entender -.-
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.
-D define uma propriedade.
-d define o diretório onde serão criados os .class
-cp define o classpath
Qual a dificuldade?
shuenemann é que eu nunca tinha usado isso antes cara mas eu to apanhando !
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
ajudo sim cara
eu vou fazer isso tbm chuta
!!!
melhor coisa 
Tudo bem, é que você não diz exatamente o que não entendeu :mrgreen:
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!
eu to com muita duvida mesmo em classpath pessoal se alguem puder me ajudar do basico mesmo eu agradeceria !!!Obrigado !
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
blza eu vou fazer cara isso agora mesmo !!
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
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
entaun eu me confundi eu não coloquei ele em diretorio nenhum !
eu vou arrumar!
Gunnar agora deu certo!
Legal Raff!!!
Agora dá uma olhada no código e vê se você entende o uso do -d , do -D e do -cp

[]s
Gunnar
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…???
eu não alguem poderia explicar ?