Erro de compilation “Não é possível localizar o símbolo”

Minha experiência de codificação só voltou alguns anos, então essa pergunta deve ser fácil de responder.

Eu escrevi duas interfaces: Class e Game. A interface CLASS deve estender a interface GAME.

Aqui estão as duas fonts de interface:

package Impl; public interface Game { //METHODS AND VARS } package Impl; public interface Class extends Game { //METHODS AND VARS } 

Agora, quando tento compilar a segunda interface, recebo o seguinte erro

 class.java:4: cannot find symbol symbol: class Game public interface Class extends Game ^ 

Minha class Game é compilada e o arquivo de class está no mesmo diretório que os dois arquivos java. Eu não consegui encontrar uma solução. Alguém tem alguma idéia?

Nomes de classs diferenciam maiúsculas de minúsculas. É possível que você tenha criado uma interface chamada game , mas você se refere a ela em sua declaração de interface de Class como Game , que o compilador não consegue encontrar.

No entanto, há outra chance que você está compilando de dentro do seu pacote Impl . Para fazer isso, você precisará referenciar seu classpath de forma que o compilador possa encontrar classs a partir da base da estrutura de pacotes. Você pode adicionar um -classpath .. arg ao seu javac antes do nome da class:

 javac -classpath .. Class.java 

Alternativamente, você pode fazer o que é mais comum, compilando a partir da raiz da sua estrutura de pacotes. Para fazer isso, você precisará especificar o caminho para o seu arquivo de Class :

 javac Impl\Class.java 

você sempre pode adicionar um -classpath . para ser claro.

Você precisa ler sobre como os caminhos de class Java funcionam e como você deve organizar seu código-fonte. Basicamente, seu problema é que quando o compilador javac compila “Class.java”, ele não espera encontrar “Game.class” no diretório atual. Ele (provavelmente) está procurando em “Impl / Game.class”.

A página ” Gerenciando o caminho de class Java ” da IBM fornece uma discussão aprofundada de como definir seu caminho de class e como os utilitários java (por exemplo, java e javac ) o utilizam para localizar arquivos de class. A página ” Configurando o caminho de class ” do Oracle fornece mais informações de forma mais sucinta … mas você precisa ler com atenção.

A propósito, você tem algumas atrocidades de estilo em seu código:

  • Os nomes dos pacotes Java devem estar em minúsculas.
  • Chamar uma class A Class é uma má ideia, porque isso colide com a class chamada java.lang.Class que é importada por padrão.