如何在开发模式下启动GWT调试

时间:2013-01-10 21:12:49

标签: java gwt

在迁移到maven之前,我们使用了Ant,从IntelliJ IDEA下启动Dev Mode没有任何问题。但现在该项目属于Maven。所以我认为所有需要的配置,当我运行调试器时,我看到登录页面,但登录后我收到以下错误:

  
    

[错误]找不到资源img / remove_filter_btn.png。是否指定为Class.getResource()的名称?

  

以下是我如何使用资源:

public interface Resources extends ClientBundle {

    @Source("img/remove_filter_btn.png")
    ImageResource removeBtn();
}

项目结构如下:

Module
|--Submodule
|  |--src
|  | |--main
|  | | |--java
|  | |   |--package
|  | |     |--class
|  | |--webapp
|  |   |--img
|  |     |--remove_filter_btn.png
|  |--target
|    |--ROOT
|      |--img
|        |--remove_filter_btn.png
|--utils
   |--tomcat
      |--webapps
         |--ROOT
            |--img
               |--remove_filter_btn.png

War文件在tomcat中启动,该文件位于utils文件夹中。

事实上,我不知道GWT在哪里寻找这个资源。也许有一个关于如何获得GWT开始寻找资源的点的解决方案?

目前这是唯一的问题,因为我认为这是调试开始工作之前唯一的问题。

1 个答案:

答案 0 :(得分:1)

ClientBundle消耗到ImageResource s的图像应该在源树中,而不是在外部网络资源中(即在目标/或webapp /)中。

写作时

package my.project.something.client
//...
public interface Resources extends ClientBundle {
    @Source("img/remove_filter_btn.png")
    ImageResource removeBtn();
}

你告诉ClientBundle它可以在src / my / project / something / client / img / remove_filter_btn.png找到图像。

请记住,ClientBundle的目的不仅仅是包装路径名字符串,以便在代码中轻松使用它们,而是将图像实际编译到应用程序中。在小图像的情况下,它通常会将整个图像放入应用程序中,因此根本不需要任何精灵。即使这是不可能的,它仍然会重写图像,以便浏览器可以永久缓存它们,并尝试优化它们,以便不再使用实际需要的空间。