• 《分布式消息中间件实践》P153


    问题:我直接把作者的源码拷贝下来(包括xml,resource等,作者应该使用的是Eclipse,我复制到IDEA上),依赖加上。执行P153的步骤,报错如下:

    Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.slf4j.impl.Log4jLoggerFactory.<init>(Log4jLoggerFactory.java:66)
        at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:72)
        at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45)
        at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
        at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
        at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
        at org.apache.kafka.clients.producer.KafkaProducer.<clinit>(KafkaProducer.java:228)
        at javaa.ProducerSample.main(ProducerSample.java:17)
    Caused by: java.lang.NullPointerException
        at org.apache.kafka.clients.producer.KafkaProducer.close(KafkaProducer.java:1017)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:414)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:288)
        at org.apache.kafka.log4jappender.KafkaLog4jAppender.getKafkaProducer(KafkaLog4jAppender.java:243)
        at org.apache.kafka.log4jappender.KafkaLog4jAppender.activateOptions(KafkaLog4jAppender.java:237)
        at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
        at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
        at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
        at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
        at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
        at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
        at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
        at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
        ... 10 more

    解决:删除resource下的log4j.properties.

    详细过程:我也不知道Producer<String, String> producer = new KafkaProducer<String, String>(props);这句代码有什么问题,debug到这里报错的。

    我真不觉得报错和这句代码有什么关系,百度,然后找到一篇博客https://www.cnblogs.com/jpfss/p/9876662.html,作者的问题和我一样都是ExceptionInInitializerError并且NullPointExceptiion。

    结果原因是知道了,但我仍然不清楚这句代码初始化了什么东西,感觉没问题,(尴尬,我好菜……,这个时候仍然没有注意到报错中的一串log4j相关的重要性)。

    再找原因,主要怀疑是依赖可能版本冲突之类的,然后改,无论怎么弄都解决不了。

    之后使出最终手段,新建项目,只保留P153的两个要测试的类——成功了……

    额,然后我比对依赖,又是各种依赖测试,花了2个多小时,各种可能试完之后,确定不是依赖问题。

    再开始删,原本的第一份项目,从类开始删除到resource文件,最后找到了resource下的log4j.properties。删除log4j.properties或者把log4j.properties中的文本内容注释也可以。

    至于根本原因………………

  • 相关阅读:
    20190905-3 命令行和控制台编程
    作业要求 20181009-9 每周例行报告
    每周例行报告
    单元测试,结对
    四则运算试题生成
    代码规范,结对要求
    规格说明书-吉林市2日游
    功能测试
    每周例行报告2
    get与post请求的区别
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/12284087.html
Copyright © 2020-2023  润新知