Ola pessoal. Estou estudando para SCJP e no capitulo 10 do livro da KS esta explicando os comandos java, javac etc.
Com isso surgiu algumas duvidas referente a minha execução de teste.
Com base nesta classe surgiu as duvidas referente a execucao do comando java: Sendo que a classe java vai estar dentro de source e o class dentro de classes.
myproject
|-- source
|-- classes
[code]
package com.navita.bean;
public class MyClass {
public static void main(String[] args) {
}
}[/code]
Com isso eu compilei a classe com o comando:
javac -classpath classes source/com/navita/bean/MyClass.java
Dae ele criou a arvore de diretorios corretamente pois estou usando pacotes. Agora quando vou executar a classe compilada ele da erro dizendo que nao encontrou a classe. Estou dentro de myproject e digitei o comando:
java -classpath classes/com/navita/bean MyClass
Ele deu a mensagem de erro dizendo que nao encontrou a classe. Mas eu olho dentro do diretorio e a classe compilada esta la. O que pode estar de errado?
Obrigado…
É porque para compilar você deve representar os pacotes na estrutura de diretórios… utilizando barra ( / ), porém para executar, você deve representar os pacotes na estrutura que você declara os pacotes dos seu código fonte, ou seja utilizando ponto ( . ).
Tente executar sua classe com esse comando…
java -classpath classes com.navita.bean.MyClass

[]'s
Desculpe pessoal, outra duvida…
Veja se minhas regras estao corretas…Com base nessas classes:
public class MyTest {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Outra
package br.com;
public class MyClass {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
1- Se a classe nao tiver declaracao de pacotes (MyTest) eu consigo compilar a classe usando o comando normal ou ate mesmo usando a opcao -classpath. Para executar eu sempre tenho que usar a opcao -classpath seguida do diretorio e nome da class.
2- Se a classe tiver declaracao de pacote (br.com.MyClass) o correto para compilar e executar a classe com sucesso depois é usando o comando “javac -d” + seguido do diretorio de destino onde vai ficar o .class desta classe + nome da classe (MyClass.java). OBS : Se acaso eu compilar esta classe com o comando “javac -classpath . MyClass.java” eu nao consigo executar depois porque eu tenho que montar a estrutura de diretorios do pacote declarado na classe. O corretto seria “javac -d . MyClass.java”.
Agora com classes com import de outras classes
import br.com.Utils;
class TestClass {
public static void main(String[] args) {
doStuff();
}
static void doStuff() {
Utils u = new Utils();
System.out.println(u.teste());
br.com.Lala la = new br.com.Lala();
System.out.println(la.lala());
}
}
3 - Se eu tiver que compilar e executar essa classe (TestClass) eu sempre tenho que informar a opcao -classpath seguida do diretorio onde se encontra a raiz da classe importada. Ex = “javac -classpath . TestClass.java”. Para executar é a mesma coisa “java - classpath . TestClass”.
Estao corretas essas afirmacoes?
Obrigado a todos e desculpem-me.