首页 > 编程语言 >ClassNotfoundException:java.net.InetAddress$CacheEntry

ClassNotfoundException:java.net.InetAddress$CacheEntry

时间:2023-09-22 17:23:42浏览次数:32  
标签:ClassNotfoundException java addresses var9 InetAddress net CacheEntry

一个需求,需要修改本地的dns解析,去验证业务的正确性,修改本地的hosts文件需要频繁的修改本地磁盘文件。

使用工具包(https://github.com/tanhaichao/javahost)这个工具类实际是通过反射机制,去修改了InetAddress中的cache值,来实现dns解析的修改。

CloseableHttpClient方法在做connect的时候,利用下述方法先获取DNS数据。InetAddress.getAllByName获取到相应的DNS解析记录,然后根据dns解析去建立socket链接。

定位到出错问题发生在:

protected Object createCacheEntry(String host, String[] ips) {
        try {
            long expiration = System.currentTimeMillis() + 315360000000L;
            InetAddress[] addresses = new InetAddress[ips.length];
 
            for(int i = 0; i < addresses.length; ++i) {
                addresses[i] = InetAddress.getByAddress(host, InetAddress.getByName(ips[i]).getAddress());
            }
 
            String className = "java.net.InetAddress$CacheEntry";
            Class<?> clazz = Class.forName(className);
            Constructor<?> constructor = clazz.getDeclaredConstructors()[0];
            constructor.setAccessible(true);
            return constructor.newInstance(addresses, expiration);
        } catch (Exception var9) {
            throw new RuntimeException(var9.getMessage(), var9);
        }
    }

没有找到java.net.InetAddress$CacheEntry 这个内部类,排查过程中发现JDK(1.8_372)中没有包含此内部类,更换jdk版本(1.8_381)启动正常。

标签:ClassNotfoundException,java,addresses,var9,InetAddress,net,CacheEntry
From: https://www.cnblogs.com/syq816/p/17722925.html

相关文章

  • 异常:java.lang.ClassNotFoundException: org.apache.commons.collections.map.ListOr
    使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时如果会出现异常:Java.lang.NoClassDefFoundError:net/sf/ezmorph/Morpher原因是少了JAR包,造成类找不到还必须有其它几个依赖包:commons-logging-1.0.4.jarcommons-lang-2.3.jarcommons-collections-3.2.jarcommons-beanutils-1......
  • 20230627 java.net.InetAddress
    介绍java.net.InetAddresspublicclassInetAddressimplementsjava.io.Serializable因特网地址,是一串数字表示的主机地址(IPv4是4字节,IPv6是16字节)支持在主机名和因特网地址之间进行转换封装了一个字节序列(IPv4是4字节),byte的取值范围是[-126,125),IPv4的大小......
  • 【解决】idea启动spring MVC报错:一个或多个listeners启动失败Listener ClassNotFoundE
    idea配置教程。tomcat调试报错Artifact:warexploded:Errorduringartifactdeployment。修改代码后,启动不生效,仍是旧代码。根本原因是:Modulesoutputpath和Artifactsoutputdirectory不匹配Modulesoutputpath一定要等于Artifactsoutputdirectory加\WEB-INF\classes......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.dao.support.Dao
    ​ 这个错误通常发生在缺少相关的依赖库或配置不正确时。根据错误信息,可以看出缺少了org.springframework.dao.support.DaoSupport类的定义。org.springframework.dao.support.DaoSupport是SpringFramework中的一个类,提供了对数据访问对象(DAO)的支持。这个错误通常发生在没有正......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.dao.support.Dao
    ​ 这个错误通常发生在缺少相关的依赖库或配置不正确时。根据错误信息,可以看出缺少了org.springframework.dao.support.DaoSupport类的定义。org.springframework.dao.support.DaoSupport是SpringFramework中的一个类,提供了对数据访问对象(DAO)的支持。这个错误通常发生在没有正......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.dao.support.Dao
     这个错误通常发生在缺少相关的依赖库或配置不正确时。根据错误信息,可以看出缺少了org.springframework.dao.support.DaoSupport类的定义。org.springframework.dao.support.DaoSupport是SpringFramework中的一个类,提供了对数据访问对象(DAO)的支持。这个错误通常发生在没有正确导......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.dao.support.Dao
     这个错误通常发生在缺少相关的依赖库或配置不正确时。根据错误信息,可以看出缺少了org.springframework.dao.support.DaoSupport类的定义。org.springframework.dao.support.DaoSupport是SpringFramework中的一个类,提供了对数据访问对象(DAO)的支持。这个错误通常发生在没有正确导......
  • java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
    环境信息:JDK17、Tomcat10问题原因我这里编译,打包都是好的,但是一运行发现就报错。错误的原因是Tomcat10里也自带了一些lib包,可以打开Tomcat下lib文件夹,这又涉及到了包的加载顺序了一打开发现Tomcat里的是 JakartaEE,我Maven里引用的还是JavaEE导致的。JavaEE的servlet......
  • 使用docker安装的tomcat部署activiti-app.war、activiti-admin.war失败(ClassNotFound
    背景一直以来习惯用docker配置一些本地学习环境,许多教程配置activiti的方式都是通过复制activiti的war包部署在tomcat中,我尝试了一下通过docker的方式遇到了一些不易察觉的错误。使用方式描述使用docker安装tomcat9.0dockerrun-d-p8080:8080--nametomcattomcat:9.0复......
  • 网络编程 p2 InetAddress
    InetAddress类相关方法:getLocalHost():获取本机InetAddress对象;getByName():根据指定主机名/域名获取IP地址对象;getHostName():获取InetAddress对象的主机名;getHostAddress():获取InerAddress对象的地址;代码演示:importjava.net.InetAddress;importjava.net.UnknownHostEx......