GWT 错误:“类在 Gin 中使用,但在 GWT 客户端代码中不可用”
Posted
技术标签:
【中文标题】GWT 错误:“类在 Gin 中使用,但在 GWT 客户端代码中不可用”【英文标题】:GWT Error: "Class is used in Gin, but not available in GWT client code" 【发布时间】:2016-09-14 10:02:35 【问题描述】:好吧,我对 GWT 还不是很熟悉,自从我开始使用 GWT 以来,这是一个一直困扰着我的错误,而且它不断出现。
我在 Spring 中使用 Arcbees GWTP Framework。我的代码非常简单。我有这样的简单 POJO
public class EmailTask implements Serializable
private static final long serialVersionUID = 2395809310736629787L;
private Integer publisherId;
private String targetPublisherId;
public Integer getPublisherId()
return publisherId;
public void setPublisherId(Integer publisherId)
this.publisherId = publisherId;
public String getTargetPublisherId()
return targetPublisherId;
public void setTargetPublisherId(String targetPublisherId)
this.targetPublisherId = targetPublisherId;
在我的 Presenter 类中,我使用异步调用将这个 POJO 的实例传递给这样的控制器。
@Inject TaskServiceAsync taskServiceAsync;
private void myTask()
taskServiceAsync.executeTask(emailTaskInstance, new AsyncCallback<String>()
@Override
public void onSuccess(String result)
Window.alert("Success");
@Override
public void onFailure(Throwable caught)
Window.alert("Failure!");
);
控制器:
@Controller
@RequestMapping("/task")
public class TaskController extends BaseRemoteService implements TaskService
private static final long serialVersionUID = -325150527276255072L;
@Override
public String executeTask(EmailTask emailTask)
//TODO: Doing something here
如您所见,没有什么太浮华了。但我在编译时收到以下错误。
[INFO] --- gwt-maven-plugin:2.7.0:compile (default) @ statistics ---
[INFO] Compiling module de.it2media.dps.statistics.DPSStatistics
[INFO] Ignored 8 units with compilation errors in first pass.
[INFO] Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
[INFO] Computing all possible rebind results for 'com.gwtplatform.mvp.client.DesktopGinjector'
[INFO] Rebinding com.gwtplatform.mvp.client.DesktopGinjector
[INFO] Invoking generator
com.google.gwt.inject.rebind.GinjectorGenerator
[INFO] [WARN] Class de.it2media.dps.statistics.server.jobs.EmailTask is used in Gin, but not available in GWT client code.
[INFO] [ERROR] Error injecting de.it2media.dps.statistics.client.application.settings.SettingsPresenter$MyProxy: Unable to create or inherit binding: No @Inject or default constructor found for de.it2media.dps.statistics.client.application.settings.SettingsPresenter$MyProxy
请原谅我的简单抱怨,但我不明白我在这里做错了什么。我以前写过类似的代码,它运行得很好。有人可以解释错误Class is used in Gin, but not available in GWT client code
的含义吗?我是否必须以某种方式自动连接某些东西?
【问题讨论】:
【参考方案1】:首先,您应该将运行配置的 GWT 中的 logLevel 设置为 TRACE
。
使用 TRACE 将向您显示包含类名和行号的错误。
消息告诉你,de.it2media.dps.statistics.server.jobs.EmailTask
类
由 GIN(客户端)使用,但不是源代码的一部分,将由 GWT 编译。
将EmailTask
类放入共享包中,消息应该消失了。
【讨论】:
EmailTask 的包本身应该告诉你有问题,因为它在server
包中。就像这个答案说的那样,将它移到共享或客户端(取决于它的实际预期使用方式),或者停止从客户端代码中引用它并找到一种不同的方式来构建功能。以上是关于GWT 错误:“类在 Gin 中使用,但在 GWT 客户端代码中不可用”的主要内容,如果未能解决你的问题,请参考以下文章
GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404