Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在客户端使用外部库类:GWT_Java_Gwt - Fatal编程技术网

Java 在客户端使用外部库类:GWT

Java 在客户端使用外部库类:GWT,java,gwt,Java,Gwt,我想在我的GWT应用程序中使用Solrj库。我制作了一个GWT服务器类来与Solrj客户端通信。我的客户机代码从服务器类获取集合,并构建UI 我的问题是GWT抱怨缺少源代码: No source code is available for type org.apache.solr.client.solrj.response.FacetField; did you forget to inherit a required module? 我可以为Solrj创建一个附加模块,然后GWT将其编译为J

我想在我的GWT应用程序中使用Solrj库。我制作了一个GWT服务器类来与Solrj客户端通信。我的客户机代码从服务器类获取
集合
,并构建UI

我的问题是GWT抱怨缺少源代码:

No source code is available for type org.apache.solr.client.solrj.response.FacetField; did you forget to inherit a required module?
我可以为Solrj创建一个附加模块,然后GWT将其编译为JS。但它将编译许多其他类,我可能永远不会在客户端上使用这些类

另一种方法是编写一些Solr类的包装器并将它们传递给客户机。但我不确定,因为这些包装器将导入Solr类,我可能会再次遇到同样的问题


解决这个问题的最好办法是什么

编写一些
数据卡车
(虚拟对象)

将所需数据刷新到
DataLorry
对象中

这甚至可以节省客户机和服务器之间的大量数据通信量,因为您只在线路上传递所需的数据


确保对象是可序列化的,并且在
共享的
包中。

您试图从客户端使用SolrJ吗?为什么要这样做而不是使用通常的GWT-RPC?不,不。我使用RPC调用服务器类,它本身调用Solrj库。只是客户机得到了
集合
,而抱怨是的包装不会有帮助。你必须使用源代码。但您可能还有另一个问题,FacetField是否可以通过GWT规则序列化?我会遵循@suresh advice这就是我们现在正在做的事情(写在回答中),不是使用Solrj,而是使用其他一些第三方库。我也读过关于RequestFactory的内容。在我看来,它允许编写更少的代码,只需将Solrj对象映射到我的代理对象。但Solrj对象并没有持久化,我认为它根本没有id。在这种情况下可以使用RequestFactory吗?所以这个虚拟类不应该是FacetField的包装器,也不应该知道FacetField类的任何内容,对吗?@damluar Yup。您需要将所需数据从
FacetField
传递到虚拟对象。这样我就能独立了。好吧,我明白了。如果很快没有其他的答复,我将接受你的答复。谢谢
server|| FacetField obj==>DataLorry obj==> client.