我在尝试编译GWT
应用时遇到此错误。我试图谷歌它,但没有提供有关此错误的信息描述:
[ERROR] java.lang.RuntimeException: a new annotation has been introduced (org.hibernate.validator.constraints.ConstraintComposition); you cannot currently introduce new annotations in devmode. Please restart.
[ERROR] at org.jboss.errai.config.rebind.MetaClassBridgeUtil.populateMetaClassFactoryFromTypeOracle(MetaClassBridgeUtil.java:88)
[ERROR] at org.jboss.errai.config.rebind.AbstractAsyncGenerator$2.run(AbstractAsyncGenerator.java:93)
[ERROR] at org.jboss.errai.config.rebind.AsyncGenerationJob.notifyStarting(AsyncGenerationJob.java:86)
[ERROR] at org.jboss.errai.config.rebind.AsyncGenerators.notifyStarting(AsyncGenerators.java:190)
[ERROR] at org.jboss.errai.config.rebind.AsyncGenerators.startAll(AsyncGenerators.java:144)
[ERROR] at org.jboss.errai.config.rebind.AsyncGenerators.getFutureFor(AsyncGenerators.java:55)
[ERROR] at org.jboss.errai.config.rebind.AsyncGenerationJob.submit(AsyncGenerationJob.java:109)
[ERROR] at org.jboss.errai.config.rebind.AbstractAsyncGenerator.startAsyncGeneratorsAndWaitFor(AbstractAsyncGenerator.java:86)
[ERROR] at org.jboss.errai.ioc.rebind.ioc.bootstrapper.IOCGenerator.generate(IOCGenerator.java:58)
[ERROR] at com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40)
[ERROR] at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:657)
[ERROR] at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
[ERROR] at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:79)
[ERROR] at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:276)
[ERROR] at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:265)
[ERROR] at com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:91)
[ERROR] at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleGwtCreate(UnifyAst.java:355)
[ERROR] at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleMagicMethodCall(UnifyAst.java:433)
[ERROR] at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.endVisit(UnifyAst.java:237)
[ERROR] at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:243)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
[ERROR] at com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:65)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:116)
[ERROR] at com.google.gwt.dev.jjs.ast.JDeclarationStatement.traverse(JDeclarationStatement.java:48)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor$ListContextImmutable.traverse(JModVisitor.java:170)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemoveImmutable(JModVisitor.java:336)
[ERROR] at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:83)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:137)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:133)
[ERROR] at com.google.gwt.dev.jjs.ast.JTryStatement.traverse(JTryStatement.java:60)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor$ListContextImmutable.traverse(JModVisitor.java:170)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemoveImmutable(JModVisitor.java:336)
[ERROR] at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:83)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:137)
[ERROR] at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:133)
[ERROR] at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:82)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[ERROR] at com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:434)
[ERROR] at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:403)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
[ERROR] at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
[ERROR] at com.google.gwt.dev.jjs.impl.UnifyAst.mainLoop(UnifyAst.java:900)
[ERROR] at com.google.gwt.dev.jjs.impl.UnifyAst.exec(UnifyAst.java:625)
[ERROR] at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:640)
[ERROR] at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
[ERROR] at com.google.gwt.dev.Precompile.precompile(Precompile.java:278)
[ERROR] at com.google.gwt.dev.Precompile.precompile(Precompile.java:229)
[ERROR] at com.google.gwt.dev.Precompile.precompile(Precompile.java:141)
[ERROR] at com.google.gwt.dev.Compiler.run(Compiler.java:232)
[ERROR] at com.google.gwt.dev.Compiler.run(Compiler.java:198)
[ERROR] at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
[ERROR] at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
[ERROR] at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
[ERROR] at com.google.gwt.dev.Compiler.main(Compiler.java:177)
答案 0 :(得分:3)
无论何时无法加载注释类型,都会抛出此异常。正如消息所说(并且Thomas在他的回复中解释),可能发生这种情况的一种情况是在开发模式会话期间添加新的注释类型。
获得此错误的另一种可能方法是在GWT编译器的类路径上没有org.hibernate.validator.constraints.ConstraintComposition
。尝试使用mvn -X gwt:compile
进行编译,并查看与GWT编译器一起使用的类路径。验证您的GWT编译类路径是否包含带有org / hibernate / validator / constraints / ConstraintComposition.class的.jar。
答案 1 :(得分:2)
DevMode(和GWT编译器BTW)从字节码解析注释,而不是源代码(对于我的知识,这是字节码在GWT中作为源的唯一用法);因此,在重新启动之前,DevMode无法看到您在源代码中引入的注释。
除非使用注释的生成器使用一些技巧来实际加载重新编译的字节码。仅供参考,GIN曾经受此限制,从2.0开始,它使用ClassLoader
技巧来缓解它。
Errai似乎有一些技巧可以检测到你已经以DevMode无法看到的方式更改了源代码(在这种情况下,我认为是GWT中内置的Bean Validation生成器,因此无法更改为使用类似的tricskas GIN)并产生错误。