2010-10-11 52 views
6

La mia esperienza di codifica è tornata indietro di alcuni anni, quindi questa domanda dovrebbe essere abbastanza semplice da rispondere.Errore "impossibile trovare il simbolo"

Ho scritto due interfacce: Class e Game. Interfaccia CLASS dovrebbe estendere l'interfaccia GAME.

Qui ci sono le sorgenti di due interfacce:

package Impl; 

public interface Game 
{ 
    //METHODS AND VARS 
} 


package Impl;  

public interface Class extends Game 
{ 
    //METHODS AND VARS 
} 

Ora, quando provo a compilare la seconda interfaccia, ottengo il seguente errore

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

La mia classe di gioco viene compilato e il file di classe si trova nella stessa directory di entrambi i file java. Non sono stato in grado di trovare una soluzione. Qualcuno ha qualche idea?

risposta

8

I nomi di classe sono case sensitive. È possibile che tu abbia creato un'interfaccia chiamata game, ma ti riferisci ad essa nella tua dichiarazione di interfaccia Class come Game, che il compilatore non riesce a trovare.

Tuttavia, c'è un'altra possibilità che si sta compilando dal proprio pacchetto Impl. Per fare ciò, è necessario fare riferimento al classpath in modo tale che il compilatore possa trovare le classi dalla base della struttura del pacchetto. È possibile aggiungere un arg -classpath .. al javac prima che il nome della classe:

javac -classpath .. Class.java 

In alternativa, si può fare ciò che è più comune, la compilazione dalla radice della vostra struttura del pacchetto. Per fare ciò, è necessario specificare il percorso del file Class:

javac Impl\Class.java 

si può sempre aggiungere un -classpath . per essere chiari.

+0

Grazie. Questo ha risolto completamente il mio problema. Avevo pensato che fosse un problema di codifica. – Jay

+7

Jay, vedo che sei nuovo su StackOverflow (benvenuto!). Si prega di "accettare" la soluzione di akf se risolvesse il problema. Più risposte hai accettato, più persone saranno disposte a rispondere alle tue domande in futuro. – AndyG

6

È necessario leggere come funzionano i percorsi di classe Java e come organizzare il codice sorgente. Fondamentalmente, il tuo problema è che quando il compilatore javac compila "Class.java", non si aspetta di trovare "Game.class" nella directory corrente. Probabilmente lo sta cercando in "Impl/Game.class".

IBM "Managing the Java classpath" pagina fornisce una discussione approfondita su come impostare il percorso di classe e come java utilità (ad esempio java e javac) usarlo per trovare i file di classe. La pagina Oracle "Setting the Classpath" fornisce più informazioni in modo più sintetico ... ma è necessario leggerlo attentamente.

A proposito, hai avuto qualche atrocità stile nel codice:

  • Java nomi dei pacchetti dovrebbero essere in tutto minuscolo.
  • Chiamare una classe Class è una cattiva idea, perché questo si scontra con la classe denominata java.lang.Class che viene importata per impostazione predefinita.
Problemi correlati