2012-10-10 7 views
6

Ho il seguente codice in Eclipse (Helios)/STS che corre e l'uscita della console stampe quando si fa un nome> Java Application Run, a dispetto della compilazione evidente emetteinterfaccia vincolante in Eclipse

public interface ITest{ 
    String func(); 
} 

public static class Test implements ITest{ 
    void printFunc(){ 
     System.out.println("Inside Test Function"); 
    } 
} 

public static void main(String[] args) {   
    Test test = new Test(); 
    test.printFunc(); 
} 

Qualcuno può individuare il ragionamento dietro questo funzionamento di Eclipse.

Nota: è ovvio che un javac esternamente non riesce a compilare.

+0

Ho provato. eclipse mostra il metodo usuale errore non implementato. –

+0

Sì. Il compilatore Eclipse mostra un errore. Ma il codice riesce ancora a "funzionare" attraverso Run-As> Applicazione Java. Da qui la domanda. –

risposta

1

Potrebbe essere stato che avete codificato la classe con successo prima degli errori. Eclipse compila automaticamente il tuo file durante la codifica. Proprio allora, ti capita di avere degli errori .. quindi decidi di eseguire come applicazione Java, Eclipse eseguirà la classe compilata più recente.

Ho provato il codice, ho implementato i metodi necessari per rimuovere gli errori, quindi lo ho rimosso di nuovo per rimettere gli errori .. sicuramente, è stato stampato "Inside Test Function". Ho anche provato a commentare System.out.println("Inside Test Function"); e ancora stampato.

In un altro tentativo, ho creato un'altra classe, ha aggiunto il codice, quindi eseguire (senza implementare gli errori per evitare l'auto-compilazione), poi stampato un errore ..

java.lang.NoSuchMethodError: main 
Exception in thread "main" 
+0

Come si ottiene un errore 'java.lang.NoSuchMethodError: main'. Hai inserito lo stesso identico codice nella nuova classe che hai creato. Ho provato a ricreare lo scenario come hai detto tu, ma la mia esperienza è diversa, come affermato. Ogni volta che salvi il file jave, ottengo una risposta console corrispondente e non una "cache" (ad esempio la parte di commento di Sysout). Voglio solo controllare se stai _building_ il file dopo averlo salvato? ' –