错误:内部编译器错误java.lang.IncompatibleClassChangeError:

时间:2016-09-21 14:37:44

标签: java gwt

我正在使用IDE:Eclipse Indigo和jre7,GWT SDK 2.4用于我的GWT项目。 在编译项目时,我收到以下错误消息:

[ERROR]  Internal compiler error
java.lang.IncompatibleClassChangeError: com.google.gwt.user.client.rpc.impl.RemoteServiceProxy and com.google.gwt.user.client.rpc.impl.RemoteServiceProxy$ServiceHelper disagree on InnerClasses attribute
    at java.lang.Class.getDeclaringClass(Native Method)
    at java.lang.Class.getEnclosingClass(Unknown Source)
    at java.lang.Class.getCanonicalName(Unknown Source)
    at com.google.gwt.user.rebind.rpc.ProxyCreator.generateProxyMethod(ProxyCreator.java:497)
    at com.google.gwt.user.rebind.rpc.ProxyCreator.generateProxyMethods(ProxyCreator.java:605)
    at com.google.gwt.user.rebind.rpc.ProxyCreator.create(ProxyCreator.java:332)
    at com.google.gwt.user.rebind.rpc.ServiceInterfaceProxyGenerator.generateIncrementally(ServiceInterfaceProxyGenerator.java:60)
    at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
    at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
    at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
    at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
    at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:257)
    at com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:91)
    at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesUsingRebinds(WebModeCompilerFrontEnd.java:96)
    at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.process(AbstractCompiler.java:254)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444)
    at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:173)
    at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:288)
    at com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.access$400(AbstractCompiler.java:139)
    at com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java:588)
    at com.google.gwt.dev.jdt.BasicWebModeCompiler.getCompilationUnitDeclarations(BasicWebModeCompiler.java:97)
    at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDeclarations(WebModeCompilerFrontEnd.java:52)
    at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:569)
    at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:284)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:233)
    at com.google.gwt.dev.Precompile.precompile(Precompile.java:145)
    at com.google.gwt.dev.Compiler.run(Compiler.java:232)
    at com.google.gwt.dev.Compiler.run(Compiler.java:198)
    at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
    at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
    at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
    at com.google.gwt.dev.Compiler.main(Compiler.java:177)

可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

有一个非常有趣的问题,你可以看看SO,这里是 - 我指向的 question

此错误通常是由于对static的任何非private,非static字段/方法所做的更改,反之亦然。有一个有趣的观点是,您可以从每个答案中学习,这将有助于您缩小您现在面临的实际问题。

RPC调用的客户端和服务器端代码应该是检查此问题所在的第一点(引用的jar或创建的GWT * .js文件)

希望这有帮助!