代码之家  ›  专栏  ›  技术社区  ›  Federer

GWT编译错误

  •  0
  • Federer  · 技术社区  · 14 年前

    我已经编译了一整天我的应用程序绝对好,但它突然开始失败。从下面可以看到,这是一个 NullPointException 但我不知道怎么了。以前有没有人处理过这个问题,或者可以提供任何帮助或指导?

    [INFO] [enunciate:assemble {execution: default}]
    [INFO] initializing enunciate.
    [INFO] invoking enunciate:generate step...
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    [INFO] invoking enunciate:compile step...
    [INFO] [gwt] Compiling module com.project.myProject
    [INFO] [gwt] Validating newly compiled units
    [INFO] [gwt] [ERROR] Unexpected
    [INFO] [gwt] java.lang.NullPointerException
    [INFO] [gwt] at com.google.gwt.dev.javac.JdtCompiler$FindTypesInCud.visit(JdtCompiler.java:179)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1253)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:478)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:576)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration.traverse(ConstructorDeclaration.java:505)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1239)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:687)
    [INFO] [gwt] at com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.process(JdtCompiler.java:158)
    [INFO] [gwt] at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444)
    [INFO] [gwt] at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:467)
    [INFO] [gwt] at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:142)
    [INFO] [gwt] at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:281)
    [INFO] [gwt] at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:182)
    [INFO] [gwt] at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:280)
    [INFO] [gwt] at com.google.gwt.dev.Precompile.precompile(Precompile.java:502)
    [INFO] [gwt] at com.google.gwt.dev.Precompile.precompile(Precompile.java:414)
    [INFO] [gwt] at com.google.gwt.dev.Compiler.run(Compiler.java:201)
    [INFO] [gwt] at com.google.gwt.dev.Compiler$1.run(Compiler.java:152)
    [INFO] [gwt] at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:87)
    [INFO] [gwt] at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:81)
    [INFO] [gwt] at com.google.gwt.dev.Compiler.main(Compiler.java:159)
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Blake Miller    14 年前

    首先,如果更新GWT不起作用,如果可以的话,将代码还原为已知的工作版本。

    我在尝试编译bug源代码时看到了来自编译器的这个错误消息,其中包含对用户定义类型的变量调用方法的错误(在编译单元中没有构造实例)。。。

    当然,这并不意味着这是你的问题,但它可能会给你一些东西去寻找。

    编译器失败,出现NullPointerException:

    MyDumbClass foo;
    foo.doSomething();
    

    没有问题:

    MyDumbClass foo = new MyDumbClass();
    foo.doSomething();
    

    我想。。。我完全猜。。。这与GWT只为实际调用的东西输出javascript有关,因此它必须从入口点开始构建一个调用图,并将其他所有内容都排除在输出之外。。。可能是在该算法中抛出了MyDumbClass,或者MyDumbClass的嵌套类型。

        2
  •  0
  •   Ryan Heaton    14 年前

    您是否已更新到更新的GWT版本而未更新依赖jar?

    默认情况下,enuciate取决于gwt1.5.2jars。但如果要更新到较新版本的Enunciate,则可能需要将依赖项更新到较新版本:

    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>2.0.0</version>
    </dependency>
    
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>2.0.0</version>
    </dependency>