Coloquei o “jdic.jar” e o “jdic_stub.jar” no classpath e tal e usei este código:
import java.awt.event.*;
import javax.swing.*;
import org.jdesktop.jdic.tray.*;
public class TrayTest {
public static void main(String[] args) {
Icon icon = new ImageIcon("icone.gif");
JPopupMenu menu = new JPopupMenu();
menu.add(new JMenuItem("Test 1"));
menu.addSeparator();
JMenu subMenu = new JMenu("Test 2");
subMenu.add(new JMenuItem("Test 3"));
menu.add(subMenu);
menu.addSeparator();
JMenuItem exit = new JMenuItem("Exit");
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(exit);
TrayIcon tray = new TrayIcon(icon, "My Caption", menu);
SystemTray.getDefaultSystemTray().addTrayIcon(tray);
}
}
Ai deu este erro:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no tray in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.<clinit>(Unknown Source)
at org.jdesktop.jdic.tray.internal.impl.WinSystemTrayService.<clinit>(Unknown Source)
at org.jdesktop.jdic.tray.internal.impl.ServiceManagerStub.getService(Unknown Source)
at org.jdesktop.jdic.tray.internal.ServiceManager.getService(Unknown Source)
at org.jdesktop.jdic.tray.SystemTray.<clinit>(Unknown Source)
at com.ederbaum.test.TrayTest.main(TrayTest.java:46)
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: removeIcon
at org.jdesktop.jdic.tray.internal.impl.WinTrayIconService.removeIcon(Native Method)
at org.jdesktop.jdic.tray.internal.impl.WinTrayIconService.removeAllIcons(Unknown Source)
at org.jdesktop.jdic.tray.internal.impl.WinTrayIconService$1.run(Unknown Source)
Java Result: 1
Já sei que o Jdic tah tentando carregar as DLL’s e não as acha. Como faço para ele achar as Dll’s que vem com o pacote? preferencialmente colocando as mesmas junto com as pastas da minha aplicação.
Sempre que a gente lê em algum lugar a palavra CLASSPATH deve entender 2 coisas:
Para compilar, o Javac precisa saber onde estão os jars. Para isto se usa a opção -cp ou -classpath com o comando javac ou se configura a IDE para encontrar as classes e libs
Para executar, também é preciso dizer onde estão as classes e para isto se usa a opção -cp ou -classpath com o comando java
oi, sei que o tópico é antigo, mas esta resposta pode ser útil a alguém.
eu estava com um problema parecido, achando que tinha a mesma causa do citado acima, mas estava enganado.
a aplicação rodava bem no windows, mas quando eu tentei no linux (usando a versão do jdic para linux, é claro) não funcionou. a exceção que dava era a seguinte:
COM O JAVA 5:
Exception in thread “Thread-2” java.lang.UnsatisfiedLinkError: initTray
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.initTray(Native Method)
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.run(Unknown Source)
COM O JAVA 6:
Exception in thread “Thread-1” java.lang.UnsatisfiedLinkError: org.jdesktop.jdic.tray.internal.impl.DisplayThread.initTray()V
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.initTray(Native Method)
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.run(Unknown Source)
depois de muito pesquisar e não encontrar a resposta para o problema, resolvi analisar o souce do jdic.
percebi que não há uma implementação para o metodo initTray nas versões para linux 0.9.3 e 0.9.2.
trocando pela versão 0.9 funcionou normalmente.