Comando java utilizando pacotes e classpath nao executa corretamente

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

:wink:

[]'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.