2013-06-25 1 views
0

Так что я экспериментирую с меню лотка, и у меня есть линия.Ресурс не найден: duke.jpg

final TrayIcon trayIcon = new TrayIcon(createImage("duke.jpg", "tray icon")); 

Метод createImage является

protected static Image createImage(String path, String description) { 
    URL imageURL = TrayIconDemo.class.getResource(path); 

    if (imageURL == null) { 
     System.err.println("Resource not found: " + path); 
     return null; 
    } else { 
     return (new ImageIcon(imageURL, description)).getImage(); 
    } 
} 

, когда я запускаю программу, я получаю следующую ошибку

Resource not found: duke.jpg 
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: creating TrayIcon with null Image 
    at java.awt.TrayIcon.<init>(Unknown Source) 
    at misc.TrayIconDemo.createAndShowGUI(TrayIconDemo.java:76) 
    at misc.TrayIconDemo.access$0(TrayIconDemo.java:68) 
    at misc.TrayIconDemo$1.run(TrayIconDemo.java:63) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

Вот фотография моей папки, показывая, где изображение.

http://i.stack.imgur.com/80tFY.png

Я хотел бы заявить, что я нашел этот http://www.oracle.com/technetwork/articles/javase/systemtray-139788.html и он работает независимо, если есть изображение или нет. Также изображение должно быть помещено в исходную папку, а НЕ - в папку, в которой была показана .java, поэтому я предполагаю, что она должна быть там для исходного кода, который касается моих вопросов. Поэтому, если кому-то нужна помощь в системном лотке, просто проверьте ссылку.

+0

Даже поместив изображение в ту же папку, что и .java, я до сих пор получаю сообщение об ошибке. – Maple

+0

@SotiriosDelimanolis Вот он. http://gyazo.com/179ba9c1e892b8e2d8cab3b7e089ca51.png – Maple

+0

@SotiriosDelimanolis Размещение изображения там также дает мне ту же ошибку. – Maple

ответ

0

Если вы измените этот метод следующим образом, он работает.

protected static Image createImage() { 
      String path="bulb.gif"; 
      String description=""; 
      String imageURL = path; 
      if (imageURL == null) { 
       System.err.println("Resource not found: " + path); 
       return null; 
      } else { 
       return (new ImageIcon(imageURL, description)).getImage(); 
      } 
     } 
0

Самый простой способ сделать это: System.out.println(new File(".").getAbsolutePath()), чтобы узнать, что считается корневым путем, а затем настроить фактический путь к файлу.

Я использую это, потому что существует разница между webapp (на основе сервлетов) и Java SE.

+1

Это зависит от того, должен ли файл находиться в пути к классам или просто в файловой системе. Очевидно, он пытается получить его из класса. –

+0

В настоящее время это место. – Maple

+0

В вашем случае изображение должно находиться в том же месте, что и класс 'TrayIconDemo.class'. –