起因

通过流式任务分析用户访问日志的过程中,需要把用户的远程IP解析成对应的省份和城市。再此过程中需要加载ip库文件。ip库文件统一放到项目src/main/resources的某个目录下,但是在加载过程中报错:

net.ipip.ipdb.InvalidDatabaseException: database file size error  at net.ipip.ipdb.Reader.init(Reader.java:58)  at net.ipip.ipdb.Reader.<init>(Reader.java:25)  at net.ipip.ipdb.Reader.<init>(Reader.java:21)  at net.ipip.ipdb.City.<init>(City.java:17)  at com.xxx.xxx.util.IpDbUtils.<clinit>(IpDbUtils.java:24)

分析

如果IP库拷贝到classes目录下是可以运行的。可以排除是IP库本身的问题,那么为什么maven打包之后就无法运行了呢?

经过网上多番查找,原来是maven-resources-plugin作怪,maven打包时,会编码特定文件导致文件不可用。

解决

maven打包项目过程中pom.xml配置文件里可以配置对项目进行统一编码,但是部分文件可能不需要进行重新编码,例如: IP库文件、证书文件等;重新编码后可能导致文件不可用。

<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-resources-plugin</artifactId>    <configuration>        <nonFilteredFileExtensions>            <!-- 需要过滤那些后缀的文件 -->            <nonFilteredFileExtension>ipdb</nonFilteredFileExtension>            <nonFilteredFileExtension>xls</nonFilteredFileExtension>        </nonFilteredFileExtensions>    </configuration></plugin>

之后。。。一切OK!

©著作权归作者所有:来自51CTO博客作者mb5fdb0aaa540da的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. linux学习第三课
  2. URL百分比编码与符号字符
  3. 剪切时死机文件丢失了的找到办法
  4. I盘格式化了的文件寻回方案.
  5. 网易伏羲关于去ID信息的表情编码研究 | 论文解读
  6. wget是一个下载文件的工具
  7. Linux运维入门教程05-02 (利用vi编辑器创建和编辑正文文件)
  8. serialVersionUID作用是什么以及如何生成的?
  9. Golang 之SSH理解

随机推荐

  1. c语言加减乘除代码
  2. c语言必背入门代码
  3. c语句以句号结束对吗
  4. c++学习路线
  5. c语言数组中以列优先对吗
  6. c语言函数调用例子
  7. c语言的文件存取方式只能是顺序存取?
  8. c语言打印菱形
  9. c++异常处理的方法
  10. 格式化代码是什么意思