ClientBundle и изображения GWT Exception

Я пытаюсь использовать ClientBundle в GWT для загрузки сообщений.

Вот мой код: gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='StockWatcher'>
    <!-- Inherit the core Web Toolkit stuff.                        -->
    <inherits name='com.google.gwt.user.User'/>

    <!-- We need the JUnit module in the main module,               -->
    <!-- otherwise eclipse complains (Google plugin bug?)           -->
    <inherits name='com.google.gwt.junit.JUnit'/>

    <!-- Inherit the default GWT style sheet.  You can change       -->
    <!-- the theme of your GWT application by uncommenting          -->
    <!-- any one of the following lines.                            -->
    <inherits name='com.google.gwt.user.theme.standard.Standard'/>
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->

    <!-- Other module inherits                                      -->

    <!-- Specify the app entry point class.                         -->
    <entry-point class='ro.gebs.master.client.StockWatcher'/>

    <!-- Specify the paths for translatable code                    -->
    <source path='client'/>
    <source path='shared'/>
    <source path='resources'/>

</module>

Интерфейс, расширяющий ClientBundle:

public interface Resources extends ClientBundle {
    Resources IMPL = (Resources) GWT.create(Resources.class);

    @Source("ro/gebs/master/resources/blogger.png")
    ImageResource blogger();
    @Source("ro/gebs/master/resources/delicious.png")
    ImageResource delicious();
    @Source("ro/gebs/master/resources/facebook.png")
    ImageResource facebook();
}

Здесь я пытаюсь использовать изображения в своем классе EntryPoint:

ImageResource[] icons = new ImageResource[]{
                Resources.IMPL.blogger(),
                Resources.IMPL.delicious(),
                Resources.IMPL.facebook()
        };

И ошибка, которую я получаю:

Exception while loading module ro.gebs.master.client.StockWatcher. See Development Mode for details.

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:411)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ExceptionInInitializerError
    at ro.gebs.master.client.StockWatcher.onModuleLoad(StockWatcher.java:24)
    ... 9 more
Caused by: java.lang.RuntimeException: Deferred binding failed for 'ro.gebs.master.client.Resources' (did you forget to inherit a required module?)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53)
    at com.google.gwt.core.shared.GWT.create(GWT.java:72)
    at com.google.gwt.core.client.GWT.create(GWT.java:86)
    at ro.gebs.master.client.Resources.<clinit>(Resources.java:12)
    ... 10 more
Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:610)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:470)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
    ... 13 more

Изображения помещаются в пакет с именем «ресурсы», но я понимаю, что ошибка заключается в том, что строка с GWT.create() кажется проблемой.


person Adrian Olar    schedule 13.05.2014    source источник
comment
где находится папка resources в вашем проекте?   -  person Braj    schedule 13.05.2014
comment
на том же уровне с клиентскими, серверными и общими пакетами, но проблема не в этом, проблема возникает в строке GWT.create(), мой код даже не доходит до этого.   -  person Adrian Olar    schedule 13.05.2014
comment
Убедитесь, что изображения размещены там.   -  person Braj    schedule 13.05.2014
comment
Там размещаются изображения   -  person Adrian Olar    schedule 13.05.2014


Ответы (2)


Попробуйте относительное положение, как показано ниже

@Source("../resources/blogger.png")
ImageResource blogger();
@Source("../resources/delicious.png")
ImageResource delicious();
@Source("../resources/facebook.png")
ImageResource facebook();

Структура проекта

ro/gebs/master
            |
            |__resources
            |          |
            |          |__blogger.png
            |
            |__client
                     |
                     |__StockWatcher.java

--РЕДАКТИРОВАТЬ--

Убедитесь, что изображения размещены в правильном месте с правильным названием и расширением.

person Braj    schedule 13.05.2014
comment
Нет, это тот самый случай - person Adrian Olar; 13.05.2014
comment
Работает нормально для меня. В этом случае нет необходимости добавлять <source path='resources'/>. - person Braj; 13.05.2014
comment
Я все еще получаю это, я заменил относительную позицию. Насколько я понимаю, ресурсы не могут быть созданы... - person Adrian Olar; 13.05.2014
comment
вы были правы, код работает нормально, у меня было изображение с расширением .jpg, а не .png... извините за глупый вопрос и спасибо за ответ. - person Adrian Olar; 13.05.2014

Удалите запись пути Resources в {module}.gwt.xml. это не требует.

<source path='resources'/>  
person bNd    schedule 13.05.2014