【发布时间】:2016-06-02 06:42:35
【问题描述】:
我为 GPS 监控系统开发前端。我需要添加新功能 - 地理围栏。我已经创建了地理围栏模型及其 PropertyAccess 接口。 编译项目时出现错误:
这是地理围栏的模型:
public class Geofence extends JavaScriptObject {
protected Geofence() {}
public final native int getId() /*-{ return this.id; }-*/;
public final native String getName() /*-{ return this.name; }-*/;
public final native String getDescription() /*-{ return this.description; }-*/;
public final native Type getType() /*-{ return this.type; }-*/;
public final native Coordinate[] getCoordinates() /*-{ return this.coordinates; }-*/;
public final native double getRadius() /*-{ return this.radius; }-*/;
public final native int getUserId() /*-{ return this.userId; }-*/;
public final native void setId(int id) /*-{ this.id = id; }-*/;
public final native void setName(String name) /*-{ this.name = name; }-*/;
public final native void setDescription(String description) /*-{ this.description = description; }-*/;
public final native void setType(Type type) /*-{ this.type = type; }-*/;
public final native void setCoordinates(Coordinate[] coordinates) /*-{ this.coordinates = coordinates; }-*/;
public final native void setRadius(double radius) /*-{ this.radius = radius; }-*/;
public final native void setUserId(int userId) /*-{ this.userId = userId; }-*/;
public final String getEmpty() {
return "";
}
}
以及访问其属性的接口:
public interface GeofenceProperties extends PropertyAccess<Geofence> {
@Editor.Path("id")
ModelKeyProvider<Geofence> key();
ValueProvider<Geofence, Integer> id();
ValueProvider<Geofence, String> name();
ValueProvider<Geofence, String> description();
ValueProvider<Geofence, Coordinate[]> coordinates();
ValueProvider<Geofence, Double> radius();
ValueProvider<Geofence, Integer> userId();
ValueProvider<Geofence, String> empty();
}
这是错误:
编译时使用 -strict 或将 -logLevel 设置为 TRACE 或 DEBUG 以查看所有错误。 计算“org.bitbucket.treklab.client.model.GeofenceProperties”的所有可能的重新绑定结果 重新绑定 org.bitbucket.treklab.client.model.GeofenceProperties 调用生成器 com.sencha.gxt.data.rebind.PropertyAccessGenerator [错误] 生成器 'com.sencha.gxt.data.rebind.PropertyAccessGenerator' 在重新绑定 'org.bitbucket.treklab.client.model.GeofenceProperties' 时引发异常 java.lang.NullPointerException 在 com.sencha.gxt.data.rebind.ValueProviderCreator.typesMatch(ValueProviderCreator.java:315) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.getSetterExpression(ValueProviderCreator.java:297) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.appendSetterBody(ValueProviderCreator.java:134) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.create(ValueProviderCreator.java:93) 在 com.sencha.gxt.core.rebind.AbstractCreator.create(AbstractCreator.java:48) 在 com.sencha.gxt.data.rebind.PropertyAccessGenerator.generate(PropertyAccessGenerator.java:94) 在 com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40) 在 com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:760) 在 com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:160) 在 com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:79) 在 com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:276) 在 com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:265) 在 com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:87) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createStaticRebindExpression(UnifyAst.java:485) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createRebindExpression(UnifyAst.java:443) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleMagicMethodCall(UnifyAst.java:576) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.endVisit(UnifyAst.java:306) 在 com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:248) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:128) 在 com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:67) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:128) 在 com.google.gwt.dev.jjs.ast.JDeclarationStatement.traverse(JDeclarationStatement.java:49) 在 com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:95) 在 com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:351) 在 com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:92) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:149) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:145) 在 com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:83) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:600) 在 com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:569) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.impl.UnifyAst.mainLoop(UnifyAst.java:1505) 在 com.google.gwt.dev.jjs.impl.UnifyAst.exec(UnifyAst.java:870) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.unifyJavaAst(JavaToJavaScriptCompiler.java:1305) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.constructJavaAst(JavaToJavaScriptCompiler.java:1038) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.precompile(JavaToJavaScriptCompiler.java:954) 在 com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.precompile(MonolithicJavaToJavaScriptCompiler.java:303) 在 com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:38) 在 com.google.gwt.dev.Precompile.precompile(Precompile.java:286) 在 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.codeserver.Recompiler.doCompile(Recompiler.java:333) 在 com.google.gwt.dev.codeserver.Recompiler.compile(Recompiler.java:161) 在 com.google.gwt.dev.codeserver.Recompiler.recompile(Recompiler.java:119) 在 com.google.gwt.dev.codeserver.Outbox.recompile(Outbox.java:128) 在 com.google.gwt.dev.codeserver.JobRunner.recompile(JobRunner.java:81) 在 com.google.gwt.dev.codeserver.JobRunner.access$100(JobRunner.java:34) 在 com.google.gwt.dev.codeserver.JobRunner$2.run(JobRunner.java:73) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) [错误] 'org/bitbucket/treklab/client/view/DeviceView.java' 中的错误 [错误] 第 145 行:无法通过延迟绑定解析“org.bitbucket.treklab.client.model.GeofenceProperties” 计算“org.bitbucket.treklab.client.resources.Resources”的所有可能的重新绑定结果 重新绑定 org.bitbucket.treklab.client.resources.Resources 调用生成器 com.google.gwt.resources.rebind.context.InlineClientBundleGenerator 准备方法 cogWheel [警告] 资源 'org/bitbucket/treklab/client/theme/icon/cogWheel.png' 是通过 ClassLoader 定位的。因此,该资源的更改不会反映在每个文件的重新编译中。它应该通过您的 .gwt.xml 中的条目或条目进行注册。在 GWT 的未来版本中,我们将删除此回退并且您的应用程序将停止编译 [WARN] 对于以下类型,生成的源代码从未提交(您是否忘记调用 commit()?) [警告] org.bitbucket.treklab.client.model.GeofencePropertiesImpl [警告] org.bitbucket.treklab.client.model.Geofence_coordinates_ValueProviderImpl 计算“org.bitbucket.treklab.client.model.GeofenceProperties”的所有可能的重新绑定结果 重新绑定 org.bitbucket.treklab.client.model.GeofenceProperties 调用生成器 com.sencha.gxt.data.rebind.PropertyAccessGenerator [错误] 生成器 'com.sencha.gxt.data.rebind.PropertyAccessGenerator' 在重新绑定 'org.bitbucket.treklab.client.model.GeofenceProperties' 时引发异常 java.lang.NullPointerException 在 com.sencha.gxt.data.rebind.ValueProviderCreator.typesMatch(ValueProviderCreator.java:315) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.getSetterExpression(ValueProviderCreator.java:297) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.appendSetterBody(ValueProviderCreator.java:134) 在 com.sencha.gxt.data.rebind.ValueProviderCreator.create(ValueProviderCreator.java:93) 在 com.sencha.gxt.core.rebind.AbstractCreator.create(AbstractCreator.java:48) 在 com.sencha.gxt.data.rebind.PropertyAccessGenerator.generate(PropertyAccessGenerator.java:94) 在 com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40) 在 com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:760) 在 com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:160) 在 com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:79) 在 com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:276) 在 com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:265) 在 com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:87) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createStaticRebindExpression(UnifyAst.java:485) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createRebindExpression(UnifyAst.java:443) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.handleMagicMethodCall(UnifyAst.java:576) 在 com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.endVisit(UnifyAst.java:306) 在 com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:248) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:128) 在 com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:67) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:128) 在 com.google.gwt.dev.jjs.ast.JDeclarationStatement.traverse(JDeclarationStatement.java:49) 在 com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:95) 在 com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:351) 在 com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:92) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:149) 在 com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:145) 在 com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:83) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:600) 在 com.google.gwt.dev.jjs.ast.JConstructor.traverse(JConstructor.java:142) 在 com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:381) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:293) 在 com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:285) 在 com.google.gwt.dev.jjs.impl.UnifyAst.mainLoop(UnifyAst.java:1505) 在 com.google.gwt.dev.jjs.impl.UnifyAst.exec(UnifyAst.java:870) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.unifyJavaAst(JavaToJavaScriptCompiler.java:1305) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.constructJavaAst(JavaToJavaScriptCompiler.java:1038) 在 com.google.gwt.dev.jjs.JavaToJavaScriptCompiler$Precompiler.precompile(JavaToJavaScriptCompiler.java:954) 在 com.google.gwt.dev.jjs.MonolithicJavaToJavaScriptCompiler.precompile(MonolithicJavaToJavaScriptCompiler.java:303) 在 com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:38) 在 com.google.gwt.dev.Precompile.precompile(Precompile.java:286) 在 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.codeserver.Recompiler.doCompile(Recompiler.java:333) 在 com.google.gwt.dev.codeserver.Recompiler.compile(Recompiler.java:161) 在 com.google.gwt.dev.codeserver.Recompiler.recompile(Recompiler.java:119) 在 com.google.gwt.dev.codeserver.Outbox.recompile(Outbox.java:128) 在 com.google.gwt.dev.codeserver.JobRunner.recompile(JobRunner.java:81) 在 com.google.gwt.dev.codeserver.JobRunner.access$100(JobRunner.java:34) 在 com.google.gwt.dev.codeserver.JobRunner$2.run(JobRunner.java:73) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) [错误] 'org/bitbucket/treklab/client/Application.java' 中的错误 [错误] 第 43 行:无法通过延迟绑定解析“org.bitbucket.treklab.client.model.GeofenceProperties” [WARN] 对于以下类型,生成的源代码从未提交(您是否忘记调用 commit()?) [警告] org.bitbucket.treklab.client.model.Geofence_coordinates_ValueProviderImpl [警告] org.bitbucket.treklab.client.model.GeofencePropertiesImpl 统一遍历了1267个字段和方法,1208个类型。 18 个被认为是当前模块的一部分,18 个已遍历其所有字段和方法。 [警告] 一些过时的类型([org.bitbucket.treklab.client.model.Geofence_description_ValueProviderImpl、org.bitbucket.treklab.client.model.GeofencePropertiesImpl、org.bitbucket.treklab.client.model.Geofence_userId_ValueProviderImpl、org.bitbucket.treklab。 client.model.Geofence_coordinates_ValueProviderImpl、org.bitbucket.treklab.client.model.Geofence_radius_ValueProviderImpl、org.bitbucket.treklab.client.model.Geofence_name_ValueProviderImpl、org.bitbucket.treklab.client.model.Geofence_id_ModelKeyProviderImpl、org.bitbucket.treklab.client。 model.Geofence_empty_ValueProviderImpl, org.bitbucket.treklab.client.model.Geofence_id_ValueProviderImpl]) 没有按预期重新处理。这要么是编译器错误,要么是生成器已合法地停止创建这些类型。 [错误] 编译器返回错误 [WARN] 重新编译失败 [WARN] 继续提供以前的版本
但是当我改变时
Coordinate[]
到
List<Coordinate>
一切正常。我哪里做错了?
【问题讨论】: