0

在迁移到 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 文件在 utils 文件夹中的 tomcat 中启动。

事实上,我不知道 GWT 在哪里寻找这个资源。也许有一个解决方案来说明如何让 GWT 开始寻找资源?

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

4

1 回答 1

1

ClientBundleinto s使用的图像ImageResource应该在源代码树中,而不是在外部 Web 资源中(即在 target/ 或 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 的目的不仅仅是包装路径名字符串以便它们可以在代码中轻松使用,而是将图像实际编译到您的应用程序中。在小图像的情况下,它通常会将整个图像放入应用程序中,因此根本不需要任何精灵。即使这是不可能的,它仍然会重写图像,以便它们可以被浏览器永久缓存,并尝试优化它们以不使用比实际需要更多的空间。

于 2013-01-10T22:28:12.457 回答