问题描述
我正在尝试在我的Java应用程序中包含一个Maxmind数据库。我使用的数据库是 GeoLite2-City.mmdb
的最新版本。
当我删除数据库文件时进入项目( src / main / resources / GeoLite2-City.mmdb
),我运行项目,我可以通过 com使用数据库。 maxmind.geoip2.DatabaseReader
并执行IP地址的查找。
然而,一旦我编译项目并创建一个包含数据库的jar文件,我就是无法读取文件中的数据库,我得到异常:
com.maxmind.db.InvalidDatabaseException:找不到MaxMind数据库元数据此文件中的标记(< InputStream>)。这是一个有效的MaxMind数据库文件吗?
解压缩.jar文件并查看mmdb文件我可以看到文件的大小已经从38Mb变为59Mb,我猜这是抛出异常的原因。
有没有人知道在.jar中打包这个文件的方法这样它可用吗?我已经尝试将原始.gz文件添加到包中,然后解压缩然后加载数据库,但这也不起作用。
解决方案
Maven打包时,则需要禁用二进制文件的资源过滤。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
...
<nonFilteredFileExtensions>
<nonFilteredFileExtension>mmdb</nonFilteredFileExtension>
</nonFilteredFileExtensions>
...
</configuration>
</plugin>
这篇关于添加到jar后,GeoLite2数据库会损坏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!