2014-07-19 22 views
16

Ho un progetto Maven configurato per l'utilizzo di Java 8 e tutto funziona bene, eclissi compila il codice come:Eclipse non inserendo operatore "diamante" in Java 8 progetto

Map<String,String> map = new HashMap<>(); 

Si lamenta anche sul codice vecchio stile ("specifica ridondante di argomenti tipo") quando ho impostato questo nella scheda Error/Warnings. Il problema è che non riesco a capire come utilizzare questa sintassi per impostazione predefinita durante il completamento automatico - Sono abbastanza sicuro di averlo visto funzionare prima, ma ora ogni volta che ctrl-spazio per inserire un costruttore, insiste sull'aggiunta dei parametri , che non mi piace

Qualcuno può suggerire quale impostazione controllare per rendere il contenuto di assistenza inserire <> invece di < String, String>? O forse è legato al fatto che sto usando Java 8 non Java 7 o che sono su Maven?

+1

quale eclipse e cosa sta usando il compilatore java eclissi? – Leo

+2

Sei sicuro che la versione java di destinazione del tuo progetto (* non * l'impostazione JRE) sia almeno Java 7? –

+0

Era STS 3.5.1 e utilizzava sicuramente Java 8 poiché non avevo nemmeno un'altra versione (JDK o JRE) installata. Anche la versione di destinazione del progetto andava bene. Ho scoperto che dovevo incasinare qualcosa nelle impostazioni di Content Assist (poteva anche essere che un plugin di Scala che ho installato e rimosso in seguito abbia cambiato qualcosa, o qualche altro plugin per quella materia). In ogni caso, il suggerimento di Marco qui sotto ha aiutato e ora funziona di nuovo, autoinserendo la sintassi del diamante. :) – Lili

risposta

23

Ho riscontrato questo problema solo pochi minuti fa e l'ho risolto a metà digitando una domanda SO.

Il completamento automatico di Eclipse ha apparentemente dato la priorità alla sintassi generica vecchio stile dopo che avevo già elaborato le impostazioni avanzate di assistenza contenuto. Prova a ripristinare Java > Editor > Content Assist > Advanced ai valori predefiniti; questo è stato risolto per me e restituito il completamento automatico per l'inserimento della sintassi del diamante per impostazione predefinita.

+0

Grazie! Ha funzionato. Non posso credere che non mi sia venuto in mente di ripristinare le impostazioni predefinite ... :) – Lili

+0

Ho lo stesso problema ma, sfortunatamente, la reimpostazione non lo risolve per me (e utilizzo la conformità al codice Java 8). –

+3

Incredibile. Questo ha risolto anche il mio problema, e ho un'installazione praticamente nuova. Tutto ciò che ho fatto è stato importare un progetto di maven e impostare alcuni modelli di commenti. Sembra che le impostazioni predefinite non siano realmente quelle predefinite. – Kayaman

5

Ho avuto lo stesso problema ma la soluzione per impostare tutto come predefinito non ha funzionato per me. Ciò che ha funzionato per me è Java > Editor > Content Assist > Advanced e deselezionando Proposte JPA nella finestra superiore.

+0

grazie; ha funzionato per me :-) – Hamzeh

2

Ho provato le altre due soluzioni menzionate qui, ma nessuna ha funzionato per me. Ciò che ha funzionato per me è stato Java > Editor > Content Assist > Advanced e il controllo Java Non-Type Proposals nella casella superiore.

Su un'installazione diversa, anche questa doveva essere controllata nell'area inferiore, ma ha funzionato in entrambe le installazioni di Eclipse.

+1

non ha funzionato per me, ciò che ha funzionato per me è Java> compilatore, impostare il livello di conformità su 1,8 invece di 1.7 – user149621

0

Ho osservato questo errore durante la compilazione con Maven. Per risolverlo, ho dovuto correggere la mia variabile di ambiente JAVA_HOME sul JDK corretto.