Dúvida em Exercício do Livro do Deitel (Java 6 ediçao)

Olá pessoal

Colegas, estou começando meus estudos com java utilizando o novo livro “JAVA Como Programar 6o edição” e já repassei os capitulos 1 e 2, iniciando o 3 me deparei com uma situação nova que é o trabalho com classes.

No livro, o autor pede que se crie uma classe public para chamar um “Hello world” quando este for solicitado por uma outra classe que possua o método MAIN.

Minhas dúvidas são as seguintes que não ficaram claras para mim no livro:

1 ) Quando o autor diz para criar uma classe e mostra o código fonte, não está claro se foi criado um projeto ou um arquivo no bloco de notas e salvo com a extensão.java.

2 ) Eu digitei exatamente o código que o livro traz como exemplo em 2 projetos separados e salvo com os nomes das classes como o autor pede, o primeiro que é uma classe public sem o método MAIN ele compilou normalmente, já o segundo que chama essa classe, não compila, ele da um erro nessa linha de código…

“GradeBook myGradeBook = new GradeBook();” dizendo o seguinte…

symbol : class GradeBook
location: class GradeBookTest
GradeBook myGradeBook = new GradeBook();

Eu não sei exatamente o que é, mas vou repassar os códigos aqui para os experts no assunto possam testar e ajudar esse noob aqui.

CLASSE A SER CHAMADA (No livro diz que a classe tem q ter o mesmo nome do *.java)

/*

  • GradeBook.java
  • Created on 14 de Abril de 2006, 10:20
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

/**
*

  • @author CGS
    */
    public class GradeBook {

    /** Creates a new instance of GradeBook */
    public void displayMessage () {
    System.out.println (“Seja bem vindo ao GradeBook!”);

    }

}

CLASSE QUE FAZ A CHAMADA E EXECUTA (idem ao anterior)

/*

  • GradeBookTest.java
  • Created on 15 de Abril de 2006, 11:05
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

/**
*

  • @author CGS
    */
    public class GradeBookTest {

    /** Creates a new instance of GradeBookTest */
    public static void main (String args []) {

    GradeBook myGradeBook = new GradeBook();
    
    myGradeBook.displayMessage();
    

    }
    }

Por favor, se alguém puder se dispor a me ajudar, eu agradeço. Continuarei tentando solucionar o problema por aqui, se conseguir solucionar eu posto aqui.

Opa!

bem vamos lá. Geralmente você não cria um projeto para cada classe diferente, você separa ela em pacotes no mesmo projeto. Para você identificar essa classe no seu projeto, você tem que importar o projeto, ou criar um jar e importar esse jar. O que você poderia fazer seria criar dois pacotes diferentes, e no pacote onde tem o método main adicionar a seguinte linha

 import <nome do pacote da classe Hello>.<nome da classe>

se você estiver utilizando o eclipse e quizer gerar um jar, vai em file>export>jar file e escolha a classe que você que exportar e o local onde vai criar o jar. Para adicionar o jar, ou o projeto clique com o botão direito no projeto onde está a classe main, va em properties e depois em java build path. existem várias abas uma dessas abas se chamar projects e outra lybraries. Na aba projects você pode adicionar os projetos, e na area lybraries as bibliotecas (.jar).

Espero ter ajudado :wink:

Quando o autor escreve acredito que não seja nescessário saber o projeto, pelomenos por enquanto. O que pode dar problema é o pacote, você pode identificar o pacote pela linha no começo da classe

 package <nome do pacote> 

Cara,

1-> O problema deve estar no classpath.
2-> Se vc usar uma IDE (Eclipse, NetBeans) vai ficar mais fácil. Se bem que no começo é bom fazer na mão pra aprender na marra :wink:
3-> Coloca os códigos dentro da tag “code” pra ficar mais legível

Boa Sorte :lol:

O galera, obrigado pelas dicas.

Com relação a IDE eu estou utilizando o netbeans 5.0 e o classpath está configurado corretamente pois qdo eu digito JAVAC ele traz os comandos (a não ser que isso não seja sinal de que esteja tudo configurado).

Com relação sobre os JAR etc, isso que eu queria entender, pois teria que modificar o código que está escrito no livro para funcionar??? Mas e o exemplo que o Deitel passou???

Sei que pra vcs terem mais detalhes, eu teria que postar o texto do livro aqui, mas para mim ter uma noção exata dessa utilização de classes e outras classes com métodos main as chamando entao eu devo criar tudo dentro do mesmo projeto?

Mas o netbeans nao permite isso certo? dois “*.java” dentro do mesmo projeto correto?

Estou falando isso sem testar pois não tenho o java aqui nesse PC, mas testarei oq vcs falaram o mais breve possivel e convido também os colegas que tem o livro a discutirem sobre essa dúvida e me ajudar a explicar da melhor forma possivel para os veteranos como os colegas acima.

Vlws.

Ei o netbeans permite quantos .java você quizer dentro do mesmo projeto. Eu não posso te ajudar muito nisso no netbeans porque eu uso eclipse e acho muito mais simples. Alem de que o pessoal aqui do PJ adora o eclipse, é muito mais fácil arrumar ajuda.

Se vc está utilizando IDE então é pra funcionar… olha se na classe “GradeBookTest” está com uma referência correta para a “GradeBook”

Uma dica é começar a escrever o nome da classe e dar um “Ctrl + Space” que ele vai mostrar a relação de classes que começam com o que vc digitou.

PS: O NetBeans, por default, é case sensitive.

[]'s

Eae pessoal, vo reportar os acontecimentos…

1 - O erro de compilação sumiu ao copiar o GradeBook.java da pasta “src” do projeto GradeBook para a pasta “src” do projeto GradeBookTest, logo cheguei a conclusão que o autor do livro deveria ter especificado de forma mais clara, pois o netbeans cria projetos, logo um projeto nao poderia chamar outro.

2 - Apesar de compilar, ao executar a primeira vez aparece um quadro dizendo que o GradeBook nao possuia MAIN, eu dei ok e ele mostrou o “Hello World” no rodapé do netbeans, onde podemos ver a compilação, mas não exibiu o objeto na tela com o a frase, pois essa era a proposta do exercício.

3 - No livro diz que só se vera o resultado quando der javac no GradeBook.java e GradeBookTest.java simultâneamente, porém está dando um erro

cannot read: GradeBook.java

Poxa, que pisada na bola do Deitel, fala que é para iniciantes e não explica direito. :???:

P.S. Valeu pela dica do crtl + space.

Olá pessoal.

Retirei os arquivos GradeBook.java e GradeBookTest.java de dentro dos respectivos projetos, coloquei eles em um diretório e compilei com o javac, foram gerado os arquivos CLASS de ambos, isso vem de encontro a minha suspeita que o Deitel no livro não pede para criar projetos mas sim no bloco de notas mesmo e salvar com a extensão *.java.

Minha dúvida agora é sobre como executar o GradeBookTest.class para que exiba o objeto com o “Hello World”.

Podem me ajudar? Estou tentando aqui tbm, qualquer coisa eu postarei.

Desde já agradeço a colaboração de todos.

RESOLVIDO EM PARTES!!!

Explico

Não precisava ter criado um projeto para o GradeBook e outro para o GradeBookTest, bastava ter criado um e na pastar SRC que existe no projeto, colocar lá os 2 arquivos *.java com os nomes acima no tópico.

Fui lá, compilei com o javac e depois executei com sucesso através terminal do windows (DOS/CMD), rodando no netbeans, funcionou também.

A DÚVIDA AINDA É

Porque não aparece o OBJETO que é demonstrado no livro??? O “new” nas linhas de código do GradeBookTest não era pra chamar ele?

OMG alguém sabe?