本人菜鸟一枚,近日在编写公司代码时用到Java整合C的项目,需要使用JNA对C进行底层调用,但是在进行中出现了问题。
起初我用的是64位jdk,在运行时报错:1% 不是有效的Win32应用程序,
后来经过百度,将64位jdk换成了32位的,该错误消失,但是变成了
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'watermark': Native library (win32-x86/watermark.dll) not found in resource path ([file:/G:/Java-EE%20Workspace/eid-server-watermark_1/target/classes/])
比较奇怪的是我的dll文件(该文件放在了source目录下了)编译之后成功出现在了target/classes目录下,并且我调用的是Win32-x86-64,理论上应该用的就是64位的jdk。另外我师傅运行这段代码在64位的jdk下没问题!!!
主函数代码如下:
public static void main(String[] args) {
//执行嵌入
String em_msg = "jjrt";
int result = Watermark.INSTANCE.watermark_embed("d://watermark_.png",
"d://watermark_.png", "d://logo.png", em_msg, em_msg.length());
System.out.println(result);
}
接口代码如下:
public interface Watermark extends Library {
Watermark INSTANCE = (Watermark) Native.loadLibrary("watermark", Watermark.class);
/**
* 嵌入水印.
*
* <p>
* 注意事项:请检查输入输出路径是否存在,是否可写可读。请检查输入路径对应文件是否存在
* 调用前请自行分配字节串数组内存空间,请保证输入数组长度与实际数组长度一致 载体图像为RGB彩色图像(BMP、PNG),
* 颜色空间位深8bit logo图像为二值图像(PNG)
* </p>
*
* @param output_imgfile_path 水印图像输出路径
* @param input_imgfile_path 载体图像输入路径
* @param input_logo_path logo图像输入路径
* @param msg 字节串数组首地址
* @param num_msg_bit 字节串数组长度
*
* @return int
*/
int watermark_embed(String output_imgfile_path, String input_imgfile_path,
String input_logo_path, String msg, int num_msg_bit);
/**
* 提取水印.
*
* 注意事项: 含水印图像为RGB彩色图像(BMP、PNG),颜色空间位深8bit 其余同嵌入函数注意事项
*
* @param input_imgfile_path 水印图像输入路径
* @param output_logo_path logo图像输出路径
* @param logo_height 提取水印图像的高度
* @param logo_width 提取水印图像的宽度
* @param num_msg_bit 字节串数组长度
* @param msg 字节串数组首地址
*
* @return int
*/
int watermark_extract(String input_imgfile_path, String output_logo_path,
int logo_height, int logo_width, int num_msg_bit, byte[] msg);
}
解决方案暂时还没找到,我先把这个错误记录下来
分享到:
相关推荐
在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract) 这个报错的原因就是项目无法加载库资源文件 ...
问题描述: 在使用git 进行提交时, 出现上面这个报错, 导致无法提交. 报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下...
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path (/opt/IBM/WebSphere/AppServer/profiles/AppSvr01/...
org.eclipse.swt.SWTException: Unable to load graphics library [GDI+ is required] (java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.swt.internal.gdip.GdiplusStartupInput)替换文件
java运行依赖jar包
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 1. 下载文件native.rar 并解压 2. 用SecureFX 上传, 替换native目录下文件,选择二进制文件上传。 3. ...
18年7月更新,清华镜像,完美解决 Yocto,Android fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle 错误,绕开GFW
解决问题:Unable to download ‘libfreeimage-3.16.0-linux64.so‘.,直接传到/root/.imageio/freeimage/
缺少winutils.exe回报如下错误: Could not locate executable null \bin\winutils.exe in the hadoop binaries 缺少hadoop.dll 错误如下: Unable to load native-hadoop library for your platform… using ...
解决fatal:remote error:You can’t push to git://github.com/username/*.git问题的办法 今天Git push的时候 fatal:remote error: You can't push to git://github.com/username/*.git Use git@github....
kernel-3.10.0-957.1.3.el7.x86_64.rpm
torch 项目完整代码,公司无法使用git,所以放了个备份在csdn上 (git clone https://github.com/torch/distro.git ~/torch --recursive)
海康威视HCNetSDK.dll是海康威视公司为开发者提供的一款用于集成其设备和服务的动态链接库,主要用于视频监控、录像回放等安防领域的功能实现。在Java环境中,由于Java本身不支持直接调用C/C++编写的DLL文件,我们...
当遇到PHP环境启动时提示无法加载动态链接库(Dynamic Link Library,DLL)的问题时,比如错误信息:"PHP Warning: PHP Startup: Unable to load dynamic library D:/php5/ext/php_mysqli.dll",表明PHP在初始化时...
kernel-4.18.0-193.el8.x86_64.rpm
springboot获取根目录及资源路径及解决jar发布时的出现D:/export-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static,采用该工具类可在发布成jar时访问到资源文件路径地址
pdksh-5.2.14-37.el5_8.1.x86_64.rpm compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm elfutils-libelf-devel-0.152-1.el6.x86_64.rpm libaio-devel-0.3.107-10.el6.x86_64.rpm libstdc++-devel-4.4.7-4.el6.x86_64....
然而,在使用PyInstaller处理包含pyzbar库的项目时,可能会遇到“Failed to load dynlib/dll”错误。本文将详细探讨这个问题的原因、解决方法以及pyzbar库的相关知识。 pyzbar是Python的一个库,用于解码多种条形码...
在64位win7下运行Virtualbox去安装系统时出错:Failed to open a session for the virtual machine,Unable to load R3 module xxxx/VBoxDD.DLL(VBoxDD),GetLastError=126,(VERR_MODULE_NOT_FOUND),打包了...
System.out.println("Error: Unable to load driver."); e.printStackTrace(); } catch (SQLException e) { System.out.println("Error connecting to database."); e.printStackTrace(); } } } ``` 请注意...