JDIC tray - Como instalar esta zorra?

Opa.

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.

Olá

Para resolver seus problemas de CLASSPATH, a primeira providência é eliminar a variável de ambiente CLASSPATH do seu sistema.

CLASSPATH era uma variável de ambiente que se usava antigamente e que hoje NÃO deve ser usada.

Nas instruções de instalação do JDIC no link abaixo fala em CLASSPATH mas não obrigatoriamente na antiga variável de ambiente.
https://jdic.dev.java.net/documentation/README.html#Installation

Sempre que a gente lê em algum lugar a palavra CLASSPATH deve entender 2 coisas:

  1. 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

  2. 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

[]s
Luca

Opa.

Foi só colocar a tray.dll na mesma pasta de jdic.jar e beleza.

Fico me perguntando pq não havia me ocorrido isto antes?

Valeu

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.