项目中使用了哈工大的自然语言处理模块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. Mabitis中的#与$符号区别及用法介绍

    这篇文章主要介绍了Mabitis中的 #{}与   ${} 符号区别,需要的朋友可以参考下 一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例 ...

  2. 并查集-D - 畅通工程

    D - 畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通 ...

  3. yii消息提示扩展

    //安装 composer.phar require --prefer-dist yiister/yii2-gentelella "~1.0" //消息存入 Yii::$app-& ...

  4. 简写函数字面量(function literal)

    如果函数的参数在函数体内只出现一次,则可以使用下划线代替: val f1 = (_: Int) + (_: Int) //等价于 val f2 = (x: Int, y: Int) => x + ...

  5. MyEclipse 安装及激活教程

    一.下载安装MyEclipse 在进行下面的步骤之前,先安装好MyEclipse (10.0.2015版本或更高版本)和JDK,安装完成后暂时不要运行MyEclipse. 二.运行MyEclipse激 ...

  6. webrtc博客收藏

    <使用WebRTC搭建前端视频聊天室——入门篇><使用WebRTC搭建前端视频聊天室——信令篇><使用WebRTC搭建前端视频聊天室——点对点通信篇><使用W ...

  7. css之float(浮动)的特性

    详解CSS float属性  float本身不脱离文档流,但是和 position:absolute;搭配使用会脱离文档流 阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 ...

  8. JS高级---函数作为参数使用

    函数作为参数使用 var arr = [1, 100, 20, 200, 40, 50, 120, 10]; //排序 arr.sort(); console.log(arr); 排序---函数作为参 ...

  9. MySQL条件查询

    语法: ①SELECT 查询列表(可以包括:字段.表达式.常量值.几个拼在一起的,构成的表) ②FROM 表名(原始表) ③WHERE (理解为当...筛选条件=TRUE或筛选条件=FALSE) 筛选 ...

  10. python面试的100题(10)

    18.反转一个整数,例如-123 --> -321 class Solution(object): def reverse(self,x): if -10<x<10: return ...