2015-05-27 31 views
6

Ho versione STS 3.6.3.SR1 basata su Eclipse Luna 4.4.1.Problema di Lombok e STS - Metodo non definito

ho fatto le seguenti operazioni:

1) Donwload ed eseguire il lombak vaso eseguibile e ha dato il percorso dei miei STS. 2) I verificate le voci di vmargs, ma mancava Xbootclasspath e aggiunto di avere come,

-vmargs 
-Dosgi.requiredJavaVersion=1.6 
-XX:MaxPermSize=256m 
-Dorg.eclipse.swt.browser.IEVersion=10001 
-Xms512m 
-Xmx1024m 
-javaagent:C:\tools\Lombok\lombok.jar 
-Xbootclasspath/a:C:\tools\Lombok\lombok.jar 

3) ho uscita e aperto le STS sia dal collegamento, come pure la posizione absoulte degli STS. exe

4) Ho verificato lo schema delle mie classi java che sono annotate con @Data e altre annotazioni lombak. Posso vedere getter e setter generati. Anche l'assistenza automatica visualizza il metodo.

5) ho fatto Maven -> Progetto di aggiornamento e anche fatto un progetto Clean

6) ha confermato che il lombak è installato come pure dalle circa STS dalla Guida.

Anche dopo tutte le precedenti attività, ci sono molti problemi del compilatore che lamentano il metodo non definito getXXX() e setXXX() su tutte le annotazioni @Data o @Getter o @Setter.

Le generazioni di build Maven hanno esito positivo e il comportamento di runtime va bene poiché la classe soddisfatta sembra avere getter e setter.

Intelli J sembra non avere alcun problema con questo come altri sviluppatori sono in grado di utilizzare la libreria.

mio pom ha la seguente voce così:

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.16.4</version> 
</dependency> 

Come si risolvono?

P.S: Ho scaricato Eclipse Keplero costruito sopra STS per consentire JBoss fusibile Tooling.

+0

Hmm., A volte si dovrà iniziare a Eclipse/STS come amministratore e poi pulire e ricostruire il progetto. Questo mi ha aiutato. Ho appena provato questo e ha funzionato. Anch'io sono stato irritato dai rimedi sopra elencati. In bocca al lupo! Troppo tardi, ma potrebbe aiutare gli altri. – harshavmb

+0

Freddo. Nel frattempo sono passato a IntelliJ e da allora l'ho usato :) Poiché i diritti di amministrazione sono gestiti dall'organizzazione, non ho potuto provarlo. Grazie comunque. –

risposta

4

Ho avuto un problema simile che è stato risolto modificando l'ambito della dipendenza lobak nel file pom.xml.

Originariamente lo scopo era "fornito" e credo di aver visto tutti gli strani comportamenti che hai descritto. Ad esempio, il pulldown di completamento del codice sensibile al contesto includeva i metodi getter e setter. Quando ho scelto un metodo getter dal pulldown, il metodo è stato inserito correttamente nell'origine. Dopo l'inserimento del metodo getter, STS ha contrassegnato l'invocazione del metodo come errore di compilazione perché riteneva che il metodo non esistesse.

Dopo aver rimosso lo scope "fornito" dalla dipendenza lombok, STS ha funzionato correttamente e i metodi getter/setter potrebbero essere aggiunti al codice, il codice potrebbe essere compilato/impacchettato ed eseguito. L'esecuzione dei metodi getter/setter ha funzionato.

2

@Karthik R, grazie per il tuo post. Di seguito ha aiutato a risolvere il problema

1.Go a https://projectlombok.org/ e scaricare e fare doppio clic sul vaso e installare nel vostro IDE 2. Dopo che aprire il file .ini e vedere se ha "javaagent" e "Xbootclasspath" variabili.Nel mio caso mancava "Xbootclasspath" e quando ho aggiunto che funzionava

1

ho aggiunto -Xbootclasspath/a:lombok.jar come naga1990 mentioned, tuttavia non ha risolto il problema. Dopo aver avviato STS con -clean ha funzionato.

+0

Questo ha funzionato per me. Su Linux, vai alla cartella contenente il file STS, e sulla console esegui './STS -clean'. Immagino che in Windows, sarebbe lo stesso con l'exe –

1

Se avete già provato altri metodi, ma ancora non funziona, si può provare questo:

Se il progetto è Maven-progetto basato, STS sarà configurato come AspectJ Capability che sarà in conflitto con Lombok.

Per risolvere il problema, rimuovere Aspect Capability di Fare clic con il pulsante destro del mouse sul progetto -> AspectJ Tools -> Rimuovi AspectJ Capability. Spero che questo funzionerà.

enter image description here