IP地址解析之github中ipdatabase项目的使用

本文介绍如何使用GitHub上的ipdatabase项目进行IP地址的城市解析。通过下载、编译并部署到Maven库,最终在IDEA中引入依赖实现IP定位功能。过程中解决依赖缺失及资源文件配置问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用gitbub上的ipdatabase项目做IP地址解析得到该IP是什么城市的。

流程:1.下载项目 2.编译 3.添加到maven库中(这里演示的是本地maven库) 4.在idea项目的pom.xml中引入依赖

ipdatabase项目地址

https://github.com/wzhe06/ipdatabase.git

下载

git clone https://github.com/wzhe06/ipdatabase.git

编译

mvn clean package -DskipTests 

编译后生成的jar包在target目录下

将这个jar包安装到自己的maven仓库中

mvn install:install-file -Dfile=F:\mc\SparkSQL\ipdatabase\target\ipdatabase-1.0-SNAPSHOT.jar -DgroupId=com.ggstar -DartifactId=ipdatabase -Dversion=1.0 -Dpackaging=jar

查看本地maven库是否加上了这个要用的jar包

打开IDEA在pom.xml中引入依赖。

代码

package com.sid.com.project

import com.ggstar.util.ip.IpHelper

object IpUtils {
  def getCity(ip:String) ={
    IpHelper.findRegionByIp(ip)
  }

  def main(args: Array[String]): Unit = {
    println(getCity("58.30.15.255"))
  }
}

运行报错

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/exceptions/InvalidFormatException
	at com.ggstar.util.ip.IpHelper.getRegionRelationMap(IpHelper.java:88)
	at com.ggstar.util.ip.IpHelper.getIpRelation(IpHelper.java:58)
	at com.ggstar.util.ip.IpHelper.buildTrain(IpHelper.java:33)
	at com.ggstar.util.ip.IpHelper.<clinit>(IpHelper.java:27)
	at com.sid.com.project.IpUtils$.getCity(IpUtils.scala:7)
	at com.sid.com.project.IpUtils$.main(IpUtils.scala:11)
	at com.sid.com.project.IpUtils.main(IpUtils.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions.InvalidFormatException
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 7 more

因为少了poi的包,在pom.xml中加上。这两个包在我们从github上下载的ipdatabase源码的pom.xml中能看到,直接复制过来。

<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.14</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.14</version>
    </dependency>

再运行

报错

java.io.FileNotFoundException: file:\F:\maven\apache-maven-3.3.9-bin\repository\com\ggstar\ipdatabase\1.0\ipdatabase-1.0.jar!\ipRegion.xlsx (文件名、目录名或卷标语法不正确。)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at com.ggstar.util.file.PoiUtil.getWorkbook(PoiUtil.java:17)
	at com.ggstar.util.ip.IpHelper.getRegionRelationMap(IpHelper.java:88)
	at com.ggstar.util.ip.IpHelper.getIpRelation(IpHelper.java:58)
	at com.ggstar.util.ip.IpHelper.buildTrain(IpHelper.java:33)
	at com.ggstar.util.ip.IpHelper.<clinit>(IpHelper.java:27)
	at com.sid.com.project.IpUtils$.getCity(IpUtils.scala:7)
	at com.sid.com.project.IpUtils$.main(IpUtils.scala:11)
	at com.sid.com.project.IpUtils.main(IpUtils.scala)
java.lang.NullPointerException
	at com.ggstar.util.ip.IpHelper.getRegionRelationMap(IpHelper.java:90)
	at com.ggstar.util.ip.IpHelper.getIpRelation(IpHelper.java:58)
	at com.ggstar.util.ip.IpHelper.buildTrain(IpHelper.java:33)
	at com.ggstar.util.ip.IpHelper.<clinit>(IpHelper.java:27)
	at com.sid.com.project.IpUtils$.getCity(IpUtils.scala:7)
	at com.sid.com.project.IpUtils$.main(IpUtils.scala:11)
	at com.sid.com.project.IpUtils.main(IpUtils.scala)

找不到ipRegion.xlsx 文件,查看从github上下载的ipdatabase源码,在resources中有两个文件。把这两个文件放到我们项目的resources下

运行结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值