изображение не загружается - PullRequest
1 голос
/ 15 сентября 2009

пытается запустить код

// Create a label with an image
Image image = new Image(display, "interspatial.gif");
Label imageLabel = new Label(shell, SWT.NONE);
imageLabel.setImage(image);

выдает мне сообщение об ошибке

Exception in thread "main" org.eclipse.swt.SWTException: 
        i/o error (java.io.FileNotFoundException: interspatial.gif 
        (O sistema não pode encontrar o arquivo especificado))
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.graphics.ImageLoader.load(Unknown Source)
    at org.eclipse.swt.graphics.ImageDataLoader.load(Unknown Source)
    at org.eclipse.swt.graphics.ImageData.<init>(Unknown Source)
    at org.eclipse.swt.graphics.Image.<init>(Unknown Source)
    at examples.ch5.LabelExample.main(LabelExample.java:31)
Caused by: java.io.FileNotFoundException:
        interspatial.gif 
        (O sistema não pode encontrar o arquivo especificado)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at org.eclipse.swt.internal.Compatibility.newFileInputStream(Unknown Source)
    ... 5 more

Дополнительная информация:

В Eclipse я развернул Chapter05, затем examples.ch5, затем щелкнул правой кнопкой мыши LabelExample.java, затем выбрал Run As, затем 1 Java-приложение.

Я попытался поместить interspatial.gif в каталог Chapter05, каталог примеров, каталог ch5 и каталог изображений (возможно, связанный с другим исходным кодом из той же главы).

Существует "пакет examples.ch5;" строка в начале файла.

Почему изображение не загружается?

Ответы [ 4 ]

3 голосов
/ 15 сентября 2009

Это бросает исключение java.io.FileNotFoundException. Поэтому вы указали неверный путь или ваше изображение недоступно по указанному пути.

Так что просто перейдите в рабочее пространство Eclipse и откройте тот проект, который вы пытаетесь запустить (Chapter05), и вставьте изображение interspatial.gif с файлом LabelExample.java в папку src. Тогда я думаю, что это должно работать.

1 голос
/ 13 февраля 2012

Второй параметр ...

new Image(display, "interspatial.gif")

... это путь к файлу. Поскольку "interspatial.gif" является не абсолютным путем, а относительным путем, он относится к текущему рабочему каталогу (CWD), в котором выполняется ваше приложение.

Когда вы запускаете приложение в Eclipse, CWD по умолчанию является корневым каталогом проекта. Таким образом, перемещение файла «interspatial.gif» в корень проекта Eclipse решит проблему.

1 голос
/ 15 сентября 2009

Похоже, ваше изображение не в том месте или имеет неправильное имя. Убедитесь, что имя идентично в вашем коде, и скопируйте его в несколько новых мест, чтобы посмотреть, сможете ли вы отобразить его.

Изображение, вероятно, должно находиться в той же папке, что и исходный файл, вероятно, 'src'.

0 голосов
/ 13 октября 2009

В вашем примере,

Image image = new Image(display, "interspatial.gif");

Ваше изображение должно существовать по тому же пути, что и этот код. Если это не то, что вы хотите, вы можете использовать плагин Activator#getImageDescriptor(String path), который использует относительный путь плагина.

Кроме того, если вы хотите повторно использовать это изображение, вы можете переопределить AbstractUIPlugin#initializeImageRegistry(ImageRegistry reg) и добавить изображение в реестр, позже получив его через AbstractUIPlugin#getImageRegistry()#get(String key). Реестр занимается утилизацией изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...