栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 有内部类的一个.java 文件打包会生成多个文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 有内部类的一个.java 文件打包会生成多个文件

这是map字段 ,在map初始化的时候 赋几个元素
public static final Map DICT = new HashMap(16) {
        {
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };

编译以后 在idea目录下只会显示一个 .class 文件
这是编译后的代码

public class test1 {
    public static final Map DICT = new HashMap(16) {
        {
            this.put("A", "1001");
            this.put("B", "1002");
            this.put("C", "1003");
            this.put("D", "1004");
            this.put("E", "1005");
        }
    };

    public test1() {
    }

    public static void main(String[] args) {
        String a = (String)DICT.get("A");
    }
}

idea目录下只会显示一个文件,而不会显示内部类的引用,在这记录一下。。。 因为生产上遇到一个问题 需要增加一个Map字典来做映射。

新增完Map字典以后,编译完成,将class文件放到生产

public static final Map DICT = new HashMap(16) {
        {
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };

    public static final Map DICT2 = new HashMap(16) {
        { // 新增的Map 字典
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };
    
    public static void main(String[] args) {
        String a = DICT.get("A");
        String a2 = DICT2.get("A");
    }

因为第一次发版的时候 不用单独提class文件放到生产

编译完成以后 还是一个class文件,没有注意到内部类的情况,线上就报了一个错

Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: 
com.dto.test$4:method (I)V not found

提示找不到找不到元素,后来一想 我用了内部类,可能会生成多个文件,是不是没有都提上去,结果打开本地项目文件夹果然发现了几个引用文件。

将引用文件放到生产上 ,正常使用。

结论:自己的粗心,还有对 Java 基础不够深入。

在此记录一下这个粗心的问题。end

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号