项目中使用了哈工大的自然语言处理模块ltp4j,使用idea工具集成到项目中之后,在本机运行没有问题,一切正常。打成war包,部署到服务器上,使用的时候报错Can't find dependent libraries,比较明显就是缺少依赖库。

1 程序缺少依赖库的问题分析

和引入其他很多的C++程序一样,我们经常碰到这个问题。程序在有的机器上能运行,在有的机器上不能运行,是否运行完全靠运气。这是因为C++的dll文件,它会依赖很多的C++库,这些C++库在不同的操作系统中安装的不太一样,有的安装少,有的安装多一些。这个问题在我们安装游戏软件的时候也会碰到,如果缺少一些C++的库文件,游戏也不能安装成功。

既然缺少C++的库文件,我们的思路就是把C++的库文件安装上,一般可以找C++的补丁库,直接在系统中安装,这种库文件的集合一般都比较大,至少几百兆,或者1个G,甚至于几个G,安装完成后,如果安装的比较全,一般问题就能解决了。但这种方法,有个缺点就是文件太大,安装的东西太多,很耗费资源,如果机器的配置不够高的话,安装这些程序可能直接将机器整的崩溃。而且这个方法也有碰运气的成分,我们有的时候很难保证我们找的库文件是全的。

另外一个思路就是,既然缺少库文件,那我们就确定到底少哪些库文件,只在系统中补充那些缺少的库文件,这样既能解决问题,也能避免安装大量使用不到的库文件。

2 查找缺少的依赖库后补充到系统

由于Can't find dependent libraries的报错,并没有告诉我们缺少的具体库文件是哪一个,我们只有借助于一些工具来查找缺少的库文件。Dependency walker是一个很好的定位缺失的dll文件的工具,在http://www.dependencywalker.com/中,我们可以下载对应系统的软件版本,解压后,直接运行里面的exe文件,在软件中打开我们的ltp4j-0.1.0-SNAPSHORT.dll,软件就会自动查找dll的依赖库,并对没有找到的依赖库标红。

标红的dll文件,就是系统缺少的库文件,记录下库文件的名称,然后根据名称到www.zhaodll.com网站去查找缺少的库文件,找到之后下载到本地,然后拷贝到C:\Windows\System32文件夹中。由于缺少的依赖库可能不止一个,我们还需要再次利用dependency walker软件打开,查找缺少的库文件,到zhaodll网站下载,copy到C:\Windows\System32目录中,重复操作,一直到没有红色标出的缺少dll文件为止。

这时候,就表示我们补全了ltp4j-0.1.0-SNAPSHORT.dll的依赖库,应该能够正常运行了,这时候我们在进行运行测试。问题就解决了。

3 结语

该问题具有普遍性,针对所有的C++程序缺少依赖库的问题都有效。另外,使用ltp4j-0.1.0-SNAPSHORT.dll的时候,在缺少依赖库的时候,还可能报其他错误信息,java.lang.NoClassDefFoundError,也就是程序在编译的时候没有问题,但是,运行的时候,由于缺少依赖库,所以会报错类没有定义。这个问题,如果没有前面缺少依赖库的信息提示,只看java.lang.NoClassDefFoundError可能很难找到问题所在。

使用ltp4j碰到Can't find dependent libraries报错信息的问题解决的更多相关文章

  1. MAC系统如果碰到报错信息:sudo:command not found

    ** 一般要考虑最近是否有别人或者自己修改过环境变量,这种报错往往是因为环境变量设置错误导致的. ** 1. 首先要获得创建,或者是打开bash_profile的权限,请在命令行中输入: export ...

  2. Android 友盟SDK 终极解决报错:SocialSDK_QQZone_2.jar contains native libraries that

    转自:http://bbs.umeng.com/thread-6552-1-2.html 报错信息:The library `SocialSDK_QQZone_2.jar` contains nati ...

  3. System.load(PWConnector.dll)加载异常 Can't find dependent libraries

    System.load(PWConnector.dll)加载异常 Can't find dependent libraries 错误信息:D:\PWAdapter\PWConnector.dll: C ...

  4. java 调用 r, Can't find dependent libraries

    rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法. 步骤: 1.本地系统: Win7 64bit 企业版, jdk1.8.0_45,R3. ...

  5. 8.2 sikuli 集成进eclipse 报错:Getting the VisionProxy.dll: Can not find dependent libraries...

    如果在执行脚本的时候出现以下错误: Getting the VisionProxy.dll: Can not find dependent libraries... 把Sikuli X 的libs目录 ...

  6. opencv 无法使用 dll 动态链接库 UnsatisfiedLinkError java.library.path Can't find dependent libraries

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 使用如上方法加载本地 dll文件. 一般会出现两种错误: 1. UnsatisfiedLinkError ja ...

  7. linux使用wkhtmltopdf报错error while loading shared libraries:

    官网提示 linux需要这些动态库.depends on: zlib, fontconfig, freetype, X11 libs (libX11, libXext, libXrender) 在li ...

  8. 10gRAC运行srvctl报错error while loading shared libraries:

    数据库10g才会有这个错,因为11g的grid和oracle是分开的. [oracle@news01 orcl]$ srvctl /u01/app/oracle/db_1/jdk/jre/bin/ja ...

  9. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...

随机推荐

  1. JS高级---正则表达式

    正则表达式 也叫规则表达式, 按照一定的规则组成的一个表达式, 这个表达式的作用主要是匹配字符串的   "我的电话:10086,他的电话:10010,你的电话:10000"  正则 ...

  2. COS上传图片和显示图片

    写这篇文章之前,我也是刚刚实现COS上传和显示图片.我百度了好多相关文章,COS上传图片成功的文章不少,上传后显示图片的文章几乎没有.于是写一篇记录下. COS上传图片推荐链接:https://blo ...

  3. python面试的100题(12)

    25.求出列表所有奇数并构造新列表 a=[1,2,3,4,5,6,7,8,9,10] res=[i for i in a if i%2==1] print(res) 结果为:[1, 3, 5, 7, ...

  4. cmake编译升级

    cmake的升级依赖于gcc版本,例如cmake 3.15.3依赖与gcc 4.8以上的版本 1)先升级gcc到4.8 参考:https://blog.csdn.net/Kangshuo2471781 ...

  5. SDF数据库

    一.SDF数据库初探 SDF是一个标准缩略数据库格式.这个数据库包含扩展名为.sdf的文件并且以结构化文件格式进行数据存储.这些SDF文件通常用于在不同数据库应用之间移动数据.它允许一个用户将一个软件 ...

  6. QT离线安装包

    各个版本下载链接http://mirrors.ustc.edu.cn/qtproject/archive/qt http://www.qtcn.org/bbs/i.php

  7. JS高级---函数作为返回值使用拓展,排序

    函数作为返回值使用拓展,排序 排序, 每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序 函数作为返回值 函数作为参数 //排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序 ...

  8. JS高级---总结apply和call方法的使用

    apply和call的使用方法 apply的使用语法   函数名字.apply(对象,[参数1,参数2,...]); 方法名字.apply(对象,[参数1,参数2,...]);   call的使用语法 ...

  9. centos修改静态Ip地址

    centos修改静态Ip地址 待办 昨天待办 https://blog.csdn.net/johnnycode/article/details/40624403 centos修改静态ip地址

  10. 钉钉内网穿透工具在windows的使用。

    钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...