2013-06-25 12 views
11

Nel mio codice, sto provando a produrre il valore di src nella finestra delle espressioni.Perché continuo a ricevere "Le valutazioni devono contenere un'espressione o un blocco di istruzioni ben formate"?

public void doIt() { 
    String src = "test"; 
    System.out.println(src); 
} 

In Eclipse. Ho impostato un breakpoint su una linea 3 e apro la finestra "Expressions".

ho aggiungere un'espressione src per valutare, e ottengo Evaluations must contain either an expression or a block of well-formed statements

Ho usato le espressioni funzionalità ... Innumerevoli volte nei miei anni di debug Java .. Perché questo accade ora?

Ho appena iniziato a utilizzare Eclipse Juno .. vs Indigo. Hanno cambiato il modo in cui funzionano le espressioni?

+0

hai scattato lo screenshot mentre il debugger era sulla linea 2, 3 o 4? in caso contrario, 'src' è fuori portata –

+0

@MarcoForberg yessir - sono positivo. Se fosse fuori portata, direbbe "src non può essere risolto in una variabile" – sircapsalot

+4

Eclipse ha la brutta abitudine di, Dio solo sa perché, arrestando la valutazione delle espressioni durante un processo di debug senza alcuna causa ragionevole, evento quando le tue espressioni sono ben formato e tutto. Molto probabilmente un problema di memoria o una sorta di corruzione dietro le quinte. Nel mio caso, la pulizia del progetto e la ricostruzione da zero, la chiusura e la riapertura dei progetti e la chiusura e riapertura di Eclipse (senza un ordine particolare) mi portano sulla mia strada. – Gamb

risposta

2

Verificare se è stato aggiornato la versione di Eclipse, sembra che la questione è fixed in Eclipse 3.3

mio Eclipse versione è 3.8.2 e se valuto l'espressione on line 2 allora io sono anche ricevendo lo stesso errore ma alla riga 3 la sua valutazione è corretta.

7

Se il codice usa alcun farmaci generici, si consiglia di controllare questo bug:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=341232

si verifica in tutte le versioni di Eclipse fino a 4.2. In breve alcune espressioni generiche fanno sì che Eclipse fallisca completamente in qualsiasi valutazione (vedere questo esempio: https://bugs.eclipse.org/bugs/attachment.cgi?id=224760). Non sei sicuro che il tuo codice usi qualche generico, ma se così fosse, potrebbe esserlo. Nota che è sufficiente avere uno dei fastidiosi farmaci generici da qualche parte nella tua classe, non necessario nel tuo metodo.

+0

sta usando i generici ..questo è interessante. – sircapsalot

+0

Confermato fino a 4.6 - forse a causa di un altro motivo ma non riesco a vedere lo slittamento. – displayname

0

Ho avuto lo stesso problema e rimuovo un metodo generico nel mio codice. Funziona per me.

1

Ho appena trascorso tonnellate di tempo per capire che se si vuole creare un pacchetto di "Pippo" e all'interno di questo pacchetto si creerà classe chiamata "Pippo", in questo modo:

package Foo; 

public class Foo{ 
    public Foo() {}; 
} 

Dopo la punto in cui si utilizza questa classe prima volta nel programma, non sarà in grado di utilizzare più espressioni:

import Foo.Foo; //this is the devil i think 

public static void main(String[] args){ 
    EventQueue.invokeLater(new Runnable(){ 
     public void run(){ 
      //debug expressions works fine 
      Foo tmp = new Foo(); 
      //debug expressions wouldn't work anymore 
     } 
    }); 
} 

questo bug può essere reprodused fino alla corrente di Eclipse Neon 4.7.

Problemi correlati