【问题标题】:Trying to add log4j in plugin type project. Error : java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator尝试在插件类型项目中添加 log4j。错误:java.lang.NoClassDefFoundError:org/apache/log4j/PropertyConfigurator
【发布时间】:2019-01-29 10:30:23
【问题描述】:

我正在尝试在插件项目中添加 Log4j.jar 以进行日志记录。我通过使用构建路径->添加外部 jar 添加 log4j jar。之后我尝试运行插件项目我得到错误

java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator。

如果我使用 java main 方法运行相同的代码,它将正常工作。

public HHLogger(Object className) {
    DateTimeFormatter df  = DateTimeFormatter.ofPattern("ddMMYYYY");
    System.setProperty("filename", df.format(LocalDate.now()));
    PropertyConfigurator.configure(".\\resources\\log4j.properties");
    logger = Logger.getLogger(className.getClass());
}



public static void main(String args[]) {
    DateTimeFormatter df  = DateTimeFormatter.ofPattern("ddMMYYYY");
    System.setProperty("filename", df.format(LocalDate.now()));
    PropertyConfigurator.configure(".\\resources\\log4j.properties");
    logger = Logger.getLogger(HHLogger.class);
    logger.info(" 999 Welcom");

}

java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator 在 com.americanexpress.connecthotelforgbt.utility.HHLogger.(HHLogger.java:22) 在 com.americanexpress.connecthotelforgbt.parsers.OhhRqRsParser.(OhhRqRsParser.java:104) 在 com.americanexpress.connecthotelforgbt.DataIntelliSense.upshellcommand(DataIntelliSense.java:322) 在 com.americanexpress.connecthotelforgbt.listener.CommandModificationService.process(CommandModificationService.java:102) 在 com.sabre.edge.cf.core.executors.PublicServiceExecutor.decide(PublicServiceExecutor.java:143) 在 org.jbpm.graph.node.Decision.execute(Decision.java:85) 在 org.jbpm.graph.def.Node.enter(Node.java:314) 在 org.jbpm.graph.def.Transition.take(Transition.java:151) 在 org.jbpm.graph.def.Node.leave(Node.java:389) 在 org.jbpm.graph.node.StartState.leave(StartState.java:70) 在 org.jbpm.graph.exe.Token.signal(Token.java:192) 在 org.jbpm.graph.exe.Token.signal(Token.java:140) 在 org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:271) 在 com.sabre.edge.cf.core.flow.JBPMFlowExecutor.execute(JBPMFlowExecutor.java:45) 在 com.sabre.edge.cf.core.SRWRuntime.executeWorkflow(SRWRuntime.java:238) 在 com.sabre.edge.cf.core.SRWRuntime.process(SRWRuntime.java:173) 在 com.sabre.edge.cf.emu.bridge.EmulatorBridge.processServiceContext(EmulatorBridge.java:198) 在 com.sabre.edge.cf.emu.bridge.EmulatorBridge.updateCommand(EmulatorBridge.java:87) 在 com.sabre.stn.emulator.core.bridge.BridgeFilter.preSend(BridgeFilter.java:80) 在 com.sabre.stn.emulator.basic.model.BasicEmulatorModel.sendPreProcess(BasicEmulatorModel.java:3737) 在 com.sabre.stn.emulator.basic.model.BasicEmulatorModel.sendMessage(BasicEmulatorModel.java:3596) 在 com.sabre.stn.emulator.basic.model.BasicEmulatorModel.doEnter(BasicEmulatorModel.java:3516) 在 com.sabre.stn.emulator.basic.model.BasicEmulatorModel.enter(BasicEmulatorModel.java:1749) 在 com.sabre.stn.emulator.basic.BasicEmulator.enter(BasicEmulator.java:1979) 在 com.sabre.stn.emulator.core.EmuManager.emptyTheKeyBuffer(EmuManager.java:1132) 在 com.sabre.stn.emulator.core.KeysToScreenThread.run(KeysToScreenThread.java:78) 引起:java.lang.ClassNotFoundException:org.apache.log4j.PropertyConfigurator 在 org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) 在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 在 java.lang.ClassLoader.loadClass(未知来源) ... 26 更多

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    错误信息很清楚,找不到PropertyConfigurator的class文件 确保类文件 PropertyConfigurator 在您的类路径中,或者如果它在 jar 文件中,则同样适用。它表明,PropertyConfigurator 是在编译时找到的,但不是在运行时找到的。也许您只需将其添加到类路径中。

    请看这个可以帮助:How to solve java.lang.NoClassDefFoundError?

    ps:如果两个类在同一个文件中,则不能这样做,因为它们都是公共的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      相关资源
      最近更新 更多