Я работал над этой же проблемой в течение двух дней, но в конце концов нашел ответ.Сначала я создал каталог для библиотек и установил переменную среды PATH в этот каталог.Я не люблю засорять свой путь, поэтому теперь я даю вам то, что я нашел в http://blog.cedarsoft.com/2010/11/setting-java-library-path-programmatically/. Моя передача следует
package yourpackage;
import java.io.File;
import java.lang.reflect.Field ;
public class YourClass {
public native void print () ;
static
{
String mPath = new File (".").getAbsolutePath () ;
String langKey = "java.library.path" ;
System.setProperty ( langKey, mPath ) ;
// Tested both with and without the following, and worked either way.
/* try
{
Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );
}
catch ( NoSuchFieldException e )
{
System.err.println ( "Unable to reset system path field: \n" + e + '\n' ) ;
}
catch ( IllegalAccessException e )
{
System.err.println ( "Unable to access system path after reset: \n"
+ e + '\n' ) ;
} */
try
{
System.loadLibrary ( "YourLibrary" ) ;
}
catch ( UnsatisfiedLinkError e )
{
System.err.println ( "Native code library failed to load.\n" + e ) ;
System.exit ( 1 ) ;
}
}
public static void main ( String[] args)
{
YourClass yc = new YourClass() ;
yc.print();
}
}
Для приведенного выше кода ваша dll должна быть в том жепапка как ваш .java.Если вы работаете из командной строки, помните, что вы звоните из того же каталога для javac, и из каталога корневого пакета для вызова java.Таким образом, для .java, являющегося C: \ workspace \ yourpackage \ YourClass.java, вы вызываете из командной строки:
cd "C:\workspace"
java yourpackage.YourClass