2015-02-19 2 views
1

Я создал демонстрационный проект here.Источники библиотек недоступны в SuperDevMode

Скомпилировать с помощью GWT без проблем из Eclipse. Когда я запустить приложение в SuperDevMode первой компиляции не удалось со следующими ошибками:

 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 

Библиотека использует <super-source path="super" /> тег. Из документации GWT я нашел (http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html)

«В режиме разработки родные классы JRE всегда заменяют классы, скомпилированные из источника».

Это проблема, потому что я не могу использовать lib в SuperDevMode.

Есть ли способ исправить это? Могу ли я опустить тег супер-источника каким-то образом?

ответ

1

При использовании Java-код не подготовленный для GWT, кажется, проблема в том, что, вероятно JsonElement происходит от com.google.gson, который библиотека не совместимую с GWT.

Вы можете прочитать кодировку GWT compatibilty и jre.

+0

Если я компилятор с gwt it Workshop, но mit в режиме Super Dev. – confile

+0

Звучит как проблема в вашем пути к классам, а также другая версия файлов модулей или классов Java, поэтому в SDM некоторый класс клиента использует JsonElement. –

1

В случае, если это может помочь, у меня возникла аналогичная проблема из-за поля static в анонимном классе (String в моем случае); хотя это принято как в стандартном, так и в GWT-эмуляторе JDK, похоже, вызывается вышеупомянутый com.google.gwt.dev.jjs.InternalCompilerException при запуске SuperDevMode (я использую GWT 2.7.0). Просто переместить оскорбительное поле из анонимного класса было достаточно, чтобы избавиться от исключения.

Смежные вопросы