我试图在我的Java应用程序中包括Maxmind数据库之一。我正在使用的数据库是的最新版本GeoLite2-City.mmdb
。
当我将数据库文件放入项目(src/main/resources/GeoLite2-City.mmdb
)中并运行该项目时,我可以通过使用数据库com.maxmind.geoip2.DatabaseReader
并执行IP地址的查找。
但是,一旦我编译了项目并创建了一个包含数据库的jar文件,便无法读取该文件中的数据库,但会出现异常:
com.maxmind.db.InvalidDatabaseException: Could not find a MaxMind DB metadata marker in this file (<InputStream>). Is this a valid MaxMind DB file?
解压缩.jar文件并查看mmdb文件,我可以看到文件大小已从38Mb更改为59Mb,我猜这是引发异常的原因。
有谁知道将文件打包到.jar中以便可用的方法吗?我尝试将原始.gz文件添加到程序包中,然后对其进行解压缩然后再加载数据库,但这也不起作用。
谢谢
您没有提到如何创建JAR,但是假设您正在使用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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句