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.
Tem alguma dica?
Segue as classes:
package br.com.rmello.food;
public abstract class Fruit{
public abstract void saborFruit();
}
import food.Fruit;
public class Apple extends Fruit {
public void saborFruit(){
System.out.println("teste");
}
}
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.
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.
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
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
[quote=rmello]Voce acha que não tem nada a ver com classpath ou coisa assim?
Vou ler esse doc.[/quote]
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.
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.
Segue o código abaixo:
package br.com.rmello.food;
public abstract class Fruit{
public abstract void saborFruit();
}
package br.com.rmello.default;
import br.com.rmello.food.Fruit;
public class Apple extends Fruit {
public static void main(String[] args) {
Apple ap = new Apple();
ap.saborFruit();
}
@Override
public void saborFruit() {
System.out.println("Maça");
}
}
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?