【发布时间】:2017-08-24 00:16:30
【问题描述】:
当我尝试在 Eclipse 中将我的 Libgdx 游戏编译为 HTML5 时,我遇到了这些奇怪的错误。
Tracing compile failure path for type 'java.util.function.DoubleUnaryOperator'
[ERROR] Errors in 'com/google/gwt/emul/java/util/function/DoubleUnaryOperator.java'
[ERROR] Line 33: Default methods are allowed only at source level 1.8 or above
[ERROR] Line 35: Cannot refer to the non-final local variable after defined in an enclosing scope
[ERROR] Line 40: Cannot refer to the non-final local variable before defined in an enclosing scope
[ERROR] Line 40: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 35: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 38: Default methods are allowed only at source level 1.8 or above
[ERROR] Line 27: Illegal modifier for the interface method identity; only public & abstract are permitted
[ERROR] Line 27: Static methods are allowed in interfaces only at source level 1.8 or above
[ERROR] Line 28: Lambda expressions are allowed only at source level 1.8 or above
Tracing compile failure path for type 'java.util.stream.Collectors'
[ERROR] Errors in 'com/google/gwt/emul/java/util/stream/Collectors.java'
[ERROR] Line 291: This static method of interface Collector can only be accessed as Collector.of
[ERROR] Line 348: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 96: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 223: The method of(Supplier<R>, BiConsumer<R,T>, BinaryOperator<R>, Collector.Characteristics...) in the type Collector is not applicable for the arguments (() -> {}, (<no type> u, <no type> t) -> {}, (Object[] u1, Object[] u2) -> {}, (Object[] a) -> {})
[ERROR] Line 311: Constructor references are allowed only at source level 1.8 or above
[ERROR] Line 192: Method references are allowed only at source level 1.8 or above
[ERROR] Line 205: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 143: Constructor references are allowed only at source level 1.8 or above
[ERROR] Line 168: Lambda expressions are allowed only at source level 1.8 or above
[ERROR] Line 339: Lambda expressions are allowed only at source level 1.8 or above...
在我的 build.gradle 中,我检查了 gwtVersion 使用的是 2.7.0 并且我的 sourceCompatibility 是 1.8。我在这件事上已经好几天了,我似乎无法弄清楚。
求救!!!
更新
感谢科林的反馈。这是我现在遇到的错误:
[ERROR] 发生内部编译器异常 com.google.gwt.dev.jjs.InternalCompilerException:构造 Java AST 时出错 在 com.google.gwt.dev.jjs.impl.GwtAstBuilder.translateException(GwtAstBuilder.java:3099) 在 com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:352) 在 org.eclipse.jdt.internal.compiler.ast.AllocationExpression.traverse(AllocationExpression.java:670) 在 org.eclipse.jdt.internal.compiler.ast.ReturnStatement.traverse(ReturnStatement.java:373) 在 org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:347) 在 org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1379) 在 com.google.gwt.dev.jjs.impl.GwtAstBuilder.process(GwtAstBuilder.java:3058) 在 com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater$UnitProcessorImpl.process(CompilationStateBuilder.java:141) 在 com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.process(JdtCompiler.java:384) 在 org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:470) 在 com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:985) 在 com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:339) 在 com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:580) 在 com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:513) 在 com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:499) 在 com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:668) 在 com.google.gwt.dev.Precompile.precompile(Precompile.java:255) 在 com.google.gwt.dev.Precompile.precompile(Precompile.java:229) 在 com.google.gwt.dev.Precompile.precompile(Precompile.java:145) 在 com.google.gwt.dev.Compiler.run(Compiler.java:206) 在 com.google.gwt.dev.Compiler.run(Compiler.java:158) 在 com.google.gwt.dev.Compiler$1.run(Compiler.java:120) 在 com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55) 在 com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50) 在 com.google.gwt.dev.Compiler.main(Compiler.java:127) 引起:java.lang.NullPointerException 在 com.google.gwt.dev.jjs.impl.ReferenceMapper.get(ReferenceMapper.java:99) 在 com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.pushNewExpression(GwtAstBuilder.java:2642) 在 com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:350) ... 23 更多 [错误] 在 TimeZone.java(126):新字符串(数据) org.eclipse.jdt.internal.compiler.ast.AllocationExpression
也许我必须将其更新到 GWT 2.8.0?
P.S:在我的 html\war\WEB-INF\lib 目录中,我有以下 jars:
这个设置正确吗?
更新:
现在更新到 GWT 2.8.1。现在我收到以下错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.gwt.util.regexfilter.RegexFilter: method <init>()V not found
at com.google.gwt.util.regexfilter.WhitelistRegexFilter.<init>(WhitelistRegexFilter.java:21)
at com.google.gwt.dev.jjs.JJSOptionsImpl.<init>(JJSOptionsImpl.java:54)
at com.google.gwt.dev.PrecompileTaskOptionsImpl.<init>(PrecompileTaskOptionsImpl.java:39)
at com.google.gwt.dev.CompilerOptionsImpl.<init>(CompilerOptionsImpl.java:30)
at com.google.gwt.dev.Compiler.main(Compiler.java:108)
我是否应该清理我的 html\war\WEB-INF\lib 目录中的(或其中一些)jar 并使用其他 jar?
【问题讨论】:
-
引导我找到一些解决方案而不是选择投票结束这个问题将是最有帮助的。我对 SO 和 Google 进行了研究,但他们都没有给我解决方案。
-
你有没有设法解决这个问题?