中科院分词ICTCLAS5.0 配置错误处理

来源:互联网 发布:oracle拷贝整个数据库 编辑:程序博客网 时间:2024/05/17 05:09
转载自:http://gdhapple.blog.163.com/blog/static/12685791720122832029133/

2012-03-08 15:48:15|  分类: Java |  标签:ictclas  错误  unsatisfiedlinkerror  ctclas_init([b)z  ictclas.log  

这个分词器调起来确实让人崩溃,今天想要把包名和dll文件换个路径,结果总是出现这样的问题:
Exception in thread "main" java.lang.UnsatisfiedLinkError: ictclas.NLPIR.NLPIR_Init([BI)Z
各种debug无果,后来发现包名改回kevin.zhang之后程序就好了。。大概是知识产权问题吧~下面转的是一个人总结的别的问题,希望大家少在调试工具上花费太多时间。
错误一:   
配置路径如下:


运行ParagraphTest.java出现如下错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: cn.yh.split.ICTCLAS50.ICTCLAS_Init([B)Z
    at cn.yh.split.ICTCLAS50.ICTCLAS_Init(Native Method)
    at cn.yh.split.Test.main(Test.java:19)


解决办法:
       最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。

错误二:
 配置文件太多,包括Data和ICTCLAS50.dll等,我想把它放在一个特定的文件夹如ICTCLAS路径下。配置路径如下:

运行ParagraphTest.java出现如下错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no ICTCLAS50 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at ICTCLAS.I3S.AC.ICTCLAS50.<clinit>(ICTCLAS50.java:9)
    at cn.yh.split.ParagraphTest.main(ParagraphTest.java:9)


解决办法:
      很明显,这是由于java.library.path不正确,只需要将导入dll时使用load导入绝对路径即可。修改ICTCLAS50.java里面的System.loadLibrary("ICTCLAS50")为 System.load(new File("").getAbsolutePath()+"\\ICTCLASConf\\ICTCLAS50.dll");

    修改后运行又出现以下错误:
Init Fail!
Cannot Open Configure file .\Configure.xml

   有错误可知,是由于找不到.\Configure.xml文件,需要将配置文件根目录设置为new File("").getAbsolutePath()+"\\ICTCLASConf"。在初始化ICTCLAS_Init时,将new File("").getAbsolutePath()+"\\ICTCLASConf".getBytes("GB2312")作为参数传递就可以正确运行了。

错误三:
   若修改后运行仍然出现错误:
Init Fail!
   刷新项目,发现根目录多了一个ICTCLAS.log的文件,打开文件内容,能够得到错误信息:
Default Path : .
start lic check.
License file .\user.lic can not open!

   表示还需要user.lic也再根目录下面。将user.lic一道根目录下。

   修改后运行在此出现错误:
Init Fail!
   重新打开ICTCLAS.log文件,得到错误信息:
Default Path : .
start lic check.
License succeed!Failed to open .\Data\character.idx
Cannot open file .\Data\character.idx.

   则表示没有找到Data文件夹,由于我们将Data放在了ICTCLASConf目录,故需要设置Configure.xml的<DataPath>Data</DataPath>//Data文件夹路径一项为指定目录。
原创粉丝点击