Estou estudando para a certificação e resolvi fazer tudo usando o DOS (linha de comando) e de cara estou com problemas.
Estou tentando fazer o primeiro exemplo do livro de certificação SCJP (pg. 11). Criei a classe abstrata Fruit no diretório c:\br\com\dominio\food e a classe Apple no c:\br\com\dominio\default.
A classe Fruit compilou sem problema mas a classe Apple da erro dizendo que não pode acessar a classe Fruit.
Isso é configuração de classpath?
Já tentei colocar as duas classes no mesmo diretório, mas foi em vão.
acho que o import precisa ser assim:import br.com.rmello.food.Fruit;
rmello
Já tentei fazer isso e aparece uma mensagem dizendo que o pacote não existe “package br.com.rmello.food does nor exist”
Já tirei até o extends da classe deixando apenas o import mas não encontra a classe.
Acho é falta eu fazer alguma configuração para trabalhar em Dos, mas não teio idéia do que, pois até onde entendo mau classpath e p java_home estão ok.
nel
Qual comando está usando para compilar ?
E quando manda compilar uma classe com pacotes, tens de informar o pacote dela. A classe ‘Fruit’ não é ‘Fruit’, é pacote.Fruit.
rmello
Nel,
Eu entrei no diretório onde se encontra cada uma das classes (c:\br\com\rmello\food no caso de Fruit e c:\br\com\rmello\default no da de Apple) e compilei com o comendo javac nomeDaClasse.java.
No caso da Fruit compilou e gerou o .class já no casso da Apple de erro ao tentar encontrar Fruit (import).
Tentrei fazer da forma que voce falou. Fui no diretorio rmello e tentei compital com o comando javac food.Fruit.java para deu um erro dizendo que não encontrou Fruit.java (file not found: food.Fruit.java) e passou a sintexe do comando javac (Usage: javac
tem ídéia o pq?
nel
rmello:
Nel,
Eu entrei no diretório onde se encontra cada uma das classes (c:\br\com\rmello\food no caso de Fruit e c:\br\com\rmello\default no da de Apple) e compilei com o comendo javac nomeDaClasse.java.
No caso da Fruit compilou e gerou o .class já no casso da Apple de erro ao tentar encontrar Fruit (import).
Tentrei fazer da forma que voce falou. Fui no diretorio rmello e tentei compital com o comando javac food.Fruit.java para deu um erro dizendo que não encontrou Fruit.java (file not found: food.Fruit.java) e passou a sintexe do comando javac (Usage: javac
Estou supondo que o package completo seja somente o food.
rmello
Voce acha que não tem nada a ver com classpath ou coisa assim?
Vou ler esse doc.
nel
rmello:
Voce acha que não tem nada a ver com classpath ou coisa assim?
Vou ler esse doc.
O comando que lhe passei, não funcionou ? E esse seu código em um Eclipse da vida, funciona certinho, né? Porque nem me atentei a ele, pois imagino que seja erro de compilação apenas, por não estar indicando o classpath.
rmello
Tentei fazer da forma que voce passou mas diz que não encontra o arquivo (no source file).
Se eu fizer sem o -cp (javac food.Fruit.java) da file not found.
Para ter certeza que não é problema de codigo acabei de fazer o código no eclipse com executar sem problema.
E troca esse .default, é palavra reservada.
Isso deve ser executado na raiz do projeto, digamos assim:
C:\Mello\projeto\br…
Seria executar esse comando estando no diretório ‘projeto’.
rmello
Nel ai que deve estár o problema…
Eu não criei esse projeto…
Como faço isso?? No eclipse isso é feito sozinho.
nel
Não Mello, não é isso. Eu me referi que os comandos que passei logo acima devem ser executados naquela ordem e na raiz do seu projeto. Você pode adicionar onde quiser, por exemplo:
C:\Filmes\Teste\br\com…
Nesse caso, a “raiz” é Teste, pois abaixo é o seu projeto, entende ? Então tu estaria na pasta “Teste” e executaria os comandos acima. Obviamente, o nome da pasta “projeto” é muito mais condizente do que “Filmes\Teste”, concorda?
rmello
Fiz o seguinte…
Criei uma pasta java e coloquei o br.com… dentro da pasta java.
alterei o nome da pasta default para generico e dentro de fonte também.
Compilei conforme voce pediu e também tentei compilar sem o -cp mas não funcionou.
Veja as mensagens:
com o -cp deu no source files
sem o -cp apareceu:
error : Class names, ‘br.com.rmello.food.Fruit.Java’, are only accepted is annotation processing is explicitly requested.
O que é isso?
nel
Desculpe, estou “destreinado”, acostumado com IDE. Troque os ‘.’ do package por ‘’ e depois ‘/’. Sim, veja como eu fiz:
javac-cp.br\com\guj\food\Fruit.javajavac-cp.br\com\guj\foods\Apple.java// para rodarjavabr/com/guj/foods/Apple
Funcionou perfeitamente, lembrando dois detalhes:
1 - Alterei o nome do package, mas não influência em nada, a ideia é exatamente a mesma.