GWT:如何从GWT2.7.0迁移到GWT2.8.2

GWT:如何从GWT2.7.0迁移到GWT2.8.2,gwt,Gwt,我在GWT2.7.0中有一个问题:日期选择器没有锚定到Chrome中的日期框。 我已尝试升级到gwt 2.8.2,但当我尝试编译代码时,出现以下异常: [ERROR] An internal compiler exception occurred [INFO] com.google.gwt.dev.jjs.InternalCompilerException: Unexpected error during visit. [INFO] at com.google.gwt.dev.jjs.ast.

我在GWT2.7.0中有一个问题:日期选择器没有锚定到Chrome中的日期框。 我已尝试升级到gwt 2.8.2,但当我尝试编译代码时,出现以下异常:

[ERROR] An internal compiler exception occurred
[INFO] com.google.gwt.dev.jjs.InternalCompilerException: Unexpected error during visit.
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.translateException(JVisitor.java:111)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:276)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:118)
[INFO]  at com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:76)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:118)
[INFO]  at com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:76)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.acceptImmutable(JModVisitor.java:305)
[INFO]  at com.google.gwt.dev.jjs.ast.JMethodCall.visitChildren(JMethodCall.java:275)
[INFO]  at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:266)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:118)
[INFO]  at com.google.gwt.dev.jjs.ast.JExpressionStatement.traverse(JExpressionStatement.java:42)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:88)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:331)
[INFO]  at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:94)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:139)
[INFO]  at com.google.gwt.dev.jjs.ast.JIfStatement.traverse(JIfStatement.java:53)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:88)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:331)
[INFO]  at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:94)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:139)
[INFO]  at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:135)
[INFO]  at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:83)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[INFO]  at com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:786)
[INFO]  at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:778)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[INFO]  at com.google.gwt.dev.jjs.impl.UnifyAst.mainLoop(UnifyAst.java:1401)
[INFO]  at com.google.gwt.dev.jjs.impl.UnifyAst.exec(UnifyAst.java:896)
[INFO]  at 
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.unifyJavaAst(JavaToJavaScriptCompiler.java:1410)
[INFO]  at 
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.constructJavaAst(JavaToJavaScriptCompiler.java:1222)
[INFO]  at 
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:1140)
[INFO]  at 
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:255)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:255)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:202)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:143)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:204)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:155)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:144)
[INFO]  at com.google.gwt.dev.Compiler$1.run(Compiler.java:118)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
[INFO]  at com.google.gwt.dev.Compiler.main(Compiler.java:125)
[INFO] Caused by: java.lang.NoSuchMethodError: 
com.google.gwt.core.ext.typeinfo.JClassType.getMetaDataTags()[Ljava/lang/String;
[INFO]  at org.googlecode.gwt.rebind.menu.ClassMenuGenerator.elabClass(ClassMenuGenerator.java:237)
[INFO]  at org.googlecode.gwt.rebind.menu.ClassMenuGenerator.create(ClassMenuGenerator.java:204)
[INFO]  at org.googlecode.gwt.rebind.menu.MenuGenerator.generate(MenuGenerator.java:14)
[INFO]  at 
com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40)
[INFO]  at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:103)
[INFO]  at 
com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
[INFO]  at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:262)
[INFO]  at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:251)
[INFO]  at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[INFO]  ... 56 more
[INFO]       [ERROR] at Cdn.java(343): GWT.create(CdnMenu.class)
[INFO]          com.google.gwt.dev.jjs.ast.JMethodCall
[INFO]       [ERROR] at Cdn.java(343): (SMenu) GWT.create(CdnMenu.class)
[INFO]          com.google.gwt.dev.jjs.ast.JCastOperation
[INFO]       [ERROR] at Cdn.java(343): (SMenu) (SMenu) GWT.create(CdnMenu.class)
[INFO]          com.google.gwt.dev.jjs.ast.JCastOperation
[INFO]       [ERROR] at Cdn.java(343): TemplateManager.setMenu((SMenu) (SMenu) 
GWT.create(CdnMenu.class))
[INFO]          com.google.gwt.dev.jjs.ast.JMethodCall
[INFO]       [ERROR] at Cdn.java(343): TemplateManager.setMenu((SMenu) (SMenu) 
GWT.create(CdnMenu.class))
[INFO]          com.google.gwt.dev.jjs.ast.JExpressionStatement
[INFO]       [ERROR] at Cdn.java(165):
下面是出错的一行:
setMenu((SMenu)GWT.create(CdnMenu.class))

有什么想法吗? 提前谢谢 斯特凡诺

看起来您的项目使用了某个MenuGenerator,该MenuGenerator正在调用JClassType.getMetaDataTags,该方法似乎已不存在。这个方法存在于接口
hasmatadata
上,12年前,但现在已经不起作用了(根据提交消息)


在web上搜索ClassMenuGenerator的完整类名(以及包结构)表明,它是该项目的一部分,以前托管在Google代码上,在该服务关闭时存档:。这些项目可以迁移到github,但我只发现,即使在该副本中,fork可能也没有维护

好消息是,修复它应该很容易,因为如上所述,元数据特性自2009年以来实际上没有做任何事情,所以您可能只需要fork并删除调用这些元数据方法的代码。根据最新版本的GWT编译项目还可以更容易地确定是否存在任何其他潜在问题,这些问题也可能导致问题

[INFO] Caused by: java.lang.NoSuchMethodError: 
com.google.gwt.core.ext.typeinfo.JClassType.getMetaDataTags()[Ljava/lang/String;
[INFO]  at org.googlecode.gwt.rebind.menu.ClassMenuGenerator.elabClass(ClassMenuGenerator.java:237)
[INFO]  at org.googlecode.gwt.rebind.menu.ClassMenuGenerator.create(ClassMenuGenerator.java:204)
[INFO]  at org.googlecode.gwt.rebind.menu.MenuGenerator.generate(MenuGenerator.java:14)