在迁移到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开始寻找资源的点的解决方案?
目前这是唯一的问题,因为我认为这是调试开始工作之前唯一的问题。
答案 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的目的不仅仅是包装路径名字符串,以便在代码中轻松使用它们,而是将图像实际编译到应用程序中。在小图像的情况下,它通常会将整个图像放入应用程序中,因此根本不需要任何精灵。即使这是不可能的,它仍然会重写图像,以便浏览器可以永久缓存它们,并尝试优化它们,以便不再使用实际需要的空间。