我需要在Java中调用DLL文件 advapi32.dll ,以便我可以使用其 CryptEncrypt 函数进行加密。是否可以通过JNI访问dll文件的功能,或者还有其他更好的方法
在Windows的system32文件夹中找到advapi32.dll
我尝试使用
System.loadLibrary("advapi32");
和
Runtime.getRuntime().loadLibrary("C:/Windows/System32/crypt32.dll");
Runtime.getRuntime()。loadLibrary()出现以下错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no C:/Windows/System32/crypt32.dll in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.Runtime.loadLibrary(Unknown Source)
at mail.encrypt.main(encrypt.java:17)
答案 0 :(得分:1)
使用以下命令指定lib路径
java -Djava.library.path=C:/Windows/System32/
或在代码内使用以下黑客方式
System.setProperty( "java.library.path", "C:/Windows/System32/" );
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );