我有一个使用Guava EventBus的Java项目。现在,我想使用该项目中的代码来与GWT一起使用,而无需重写它。我知道GWT有自己的EventBus,但是我不能更改Java项目中的导入,因为这会破坏Java项目。
在我的GWT项目中,我加入了番石榴和gwt-guava罐子。我还包括:
<inherits name="com.google.common.collect.Collect"/>
在我的gwt.xml文件中。 Guava至少在GWT项目中为其他类(例如Strings)工作。
我想使用Guava的EventBus,而不是GWT提供的EventBus。我需要这样做,因为我的Java项目无法与该GWT EventBus一起使用。
问题是GWT项目使用GWT EventBus,而Java项目使用Guava EventBus。如何将这些东西放在一起?如果能以某种方式替换GWT项目中Java项目中的Guava EventBus,那就太好了。
如何将Guava EventBus与GWT一起使用?有没有一种方法可以使用它而不更改其他Java项目中的依赖关系?
最佳答案
Guava的EventBus
在GWT客户端代码中不可用。 (您可以说是因为it doesn't have the @GwtCompatible
annotation。)
有时可以使在GWT下不可用的类可用。但是,EventBus
使用Java反射,该反射在GWT下几乎不可用,因此无法使其可用。