/ / Le sorgenti della libreria non sono disponibili in SuperDevMode: java, gwt, google-plugin-eclipse, gwt-super-dev-mode

Le fonti della libreria non sono disponibili in SuperDevMode: java, gwt, google-plugin-eclipse, gwt-super-dev-mode

Ho creato un progetto demo Qui.

Si compila con GWT compilato senza problemi da Eclipse. Quando eseguo l'app in SuperDevMode, la prima compilazione non è riuscita con i seguenti errori:

        Compiling 1 permutation
Compiling permutation 0...
[ERROR] An internal compiler exception occurred
com.google.gwt.dev.jjs.InternalCompilerException: Unexpected error during visit.
at com.google.gwt.dev.jjs.ast.JVisitor.translateException(JVisitor.java:121)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:140)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:132)
at com.google.gwt.dev.jjs.impl.Devirtualizer.getStaticImpl(Devirtualizer.java:562)
at com.google.gwt.dev.jjs.impl.Devirtualizer.access$400(Devirtualizer.java:75)
at com.google.gwt.dev.jjs.impl.Devirtualizer$RewriteVirtualDispatches.ensureDevirtualVersionExists(Devirtualizer.java:184)
at com.google.gwt.dev.jjs.impl.Devirtualizer$RewriteVirtualDispatches.endVisit(Devirtualizer.java:101)
at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:580)
at com.google.gwt.dev.jjs.ast.JModVisitor$ListContextImmutable.traverse(JModVisitor.java:183)
at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemoveImmutable(JModVisitor.java:355)
at com.google.gwt.dev.jjs.ast.JInterfaceType.traverse(JInterfaceType.java:75)
at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:380)
at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:292)
at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:284)
at com.google.gwt.dev.jjs.ast.JProgram.visitModuleTypes(JProgram.java:1192)
at com.google.gwt.dev.jjs.ast.JProgram.traverse(JProgram.java:1156)
at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:380)
at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:292)
at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:284)
at com.google.gwt.dev.jjs.impl.Devirtualizer.execImpl(Devirtualizer.java:320)
at com.google.gwt.dev.jjs.impl.Devirtualizer.exec(Devirtualizer.java:218)
at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler$MonolithicPermutationCompiler.normalizeSemantics(MonolithicJavaToJavaScriptCompiler.java:95)
at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:290)
at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:50)
at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:74)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:137)
... 27 more
[ERROR] <no source info>: <source info not available>
[ERROR] at JsonElement.java(19): public abstract JsonElement clear();

com.google.gwt.dev.jjs.ast.JMethod
[ERROR] at JsonElement.java(18): interface JsonElement extends Serializable
com.google.gwt.dev.jjs.ast.JInterfaceType
[ERROR] at Unknown(0): <JProgram>
com.google.gwt.dev.jjs.ast.JProgram
[ERROR] Unrecoverable exception, shutting down
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
at com.google.gwt.dev.javac.CompilationProblemReporter.logAndTranslateException(CompilationProblemReporter.java:106)
at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$PermutationCompiler.compilePermutation(JavaToJavaScriptCompiler.java:367)
at com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.compilePermutation(MonolithicJavaToJavaScriptCompiler.java:296)
at com.google.gwt.dev.jjs.UnifiedAst.compilePermutation(UnifiedAst.java:143)
at com.google.gwt.dev.CompilePerms.compile(CompilePerms.java:197)
at com.google.gwt.dev.ThreadedPermutationWorkerFactory$ThreadedPermutationWorker.compile(ThreadedPermutationWorkerFactory.java:50)
at com.google.gwt.dev.PermutationWorkerFactory$Manager$WorkerThread.run(PermutationWorkerFactory.java:74)
at java.lang.Thread.run(Thread.java:745)
[ERROR] Not all permutation were compiled , completed (0/1)
[WARN] recompile failed
[WARN] continuing to serve previous version

La libreria utilizza l'estensione <super-source path="super" /> etichetta. Dalla documentazione di GWT ho trovato (http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html)

"In modalità di sviluppo, le classi JRE native sostituiscono sempre le classi compilate dal codice sorgente."

Questo è un problema perché non posso usare la libreria in SuperDevMode.

C'è un modo per risolvere questo problema? Posso omettere in qualche modo il tag super-sorgente?

risposte:

1 per risposta № 1

Stai usando codice java non preparato per GWT, sembra che il problema sia JsonElement che probabilmente proviene da com.google.gson che è una libreria non compatibile con GWT.

Potresti leggere la codifica GWT compatibilità e jre documentazione di emulazione.


1 per risposta № 2

Nel caso in cui potesse essere d'aiuto, ho riscontrato un problema simile, a causa di un file static campo in una classe anonima (String nel mio caso); sebbene questo sia accettato sia nel JDK standard che in quello di emulazione GWT, sembra che sia la causa del suddetto com.google.gwt.dev.jjs.InternalCompilerException all'avvio di SuperDevMode (sto usando GWT 2.7.0). Basta spostare il campo incriminato fuori dalla classe anonima per sbarazzarsi dell'eccezione.