Problema ao carregar biblioteca com JNI

Estou enfrentando um problema ao carregar a DLL da minha biblioteca JNI.

Eu fiz uma biblioteca, para aprendizado, que permite ao meu programa Java chamar várias funções através da Win32 API, como: MAC address, tamanho do espaço livre em disco, serial do HD, nome da placa de rede, etc.

Coloco a minha DLL na pasta Windows\System32 e tudo funciona perfeitamente. Porém eu observei que vários projetos colocam as DLLs na mesma pasta do JAR que as chama, como por exemplo o SWT e o Systray.

Como eu pretendo distribuir essa biblioteca, eu queria manter a complexidade no mínimo possível, sem mexer em pastas do Sistema Operacional, deixando a DLL na mesma pasta do meu JAR, mas sem usar a diretiva -D do java.exe.

Olhando o código dessas bibliotecas eu vi que eles carregam as DLLs com o comando:

System.loadLibrary

que requer que a DLL esteja em:

java.library.path

Eu já olhei em todo canto, mas não consegui entender como nessas biblioteca eles fizeram para colocar as DLLs na mesma pasta do JAR. Quando eu tento fazer o mesmo eu obtenho a seguinte exceção:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no winsi.dll in java.library.path

Alguém já passou pelo mesmo problema? Agradeço qualquer ajuda, porque já estou ficando louco, estou a ponto de apagar tudo e esquecer esse negócio de JNI. :mad:

pq nao quer usar a opção -D ??
vc pode criar um script(por exemplo, um .bat se for windows) que execute o java com os parametros corretos)

Dei uma olhada mais a fundo no SWT e vi que p/ rodar é preciso passar o -D, vou usar assim mesmo.