添加到jar中时,GeoLite2数据库损坏

StackLemming

我试图在我的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文件添加到程序包中,然后对其进行解压缩然后再加载数据库,但这也不起作用。

谢谢

格雷格·奥施瓦尔德(Greg Oschwald)

您没有提到如何创建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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GeoLite2 数据库在添加到 war 时损坏

来自geoLite2 IP数据库的错误结果

从包含多个文件的gzip中仅提取MaxMind GeoLite2国家数据库的脚本

PHP-如何在MySql中使用GeoLite2 IP CSV数据库?

在laravel中,将数据添加到数据库时出现以下错误

将数据库中的数据添加到阵列

OrmLite –在添加到ForeignCollection或从ForeignCollection中删除时,防止数据库自动更改

为什么 Maxmind 的 GeoLite2 City 数据库返回不存在的 geoname_id?

将整数添加到数据库中的列

角色未添加到数据库中的用户

SQLite 项目未添加到数据库中

将foreach添加到数据库查询中

无法添加到数据库

添加到数据库的问题

Ruby添加到数据库

首先将表添加到Entity Framework数据库中的数据库

如何在将指标数据添加到流入数据库中时使用时间字段?

创建数据并将数据添加到SQLite数据库时出错

当使用javascript动态添加数据库时,如何使用php将信息添加到数据库?

在数据库中找不到记录时如何将新项目添加到下拉列表

如何将H2添加到Wildfly,以便可以查看数据库中的数据?

将产品添加到数据库时添加日期/时间

将数据添加到Access数据库时,显示以下错误

将数据添加到Android Studio上的SQLite数据库时出错

将新用户添加到Wso2 CEP到H2数据库中

添加到SBT项目中的库时,无法解析InteliJ中的jar库

在Django中将除表单数据外的数据添加到数据库中

尝试在Xamarin iOS中将项目添加到数据库时出现Firebase实时数据库问题

EF添加未添加到数据库