是否有人使用过log4j并知道什么“构造函数()不可见”?

这是Main-class的代码:

import org.apache.log4j.xml.DOMConfigurator;
import stdGame.*;
public class Main {
  public static void main(String[] args) {
      DOMConfigurator.configureAndWatch( "data/log/myLoggerConfig.xml", 60*1000 );
      new LogTest();
    }
}


LogTest类位于stdGame-package中,如您所见,该文件已被导入。
将LogTest-class与Main-class放在同一包中时,代码将按预期工作。
这是LogTest()类的代码:

package stdGame;
import org.apache.log4j.Logger;
public class LogTest {
    private static Logger logger = Logger.getLogger(LogTest.class);
    LogTest() {
        logger.info("My info-msg in LogTest.");
        logger.error("My error-msg in LogTest.");
    }
}


尝试将它们放入同一包装中,错误消息将消失。但是我需要将它们放入单独的包装中。

最后,这是myLoggerConfig.xml文件:

  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="MeinAppender" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="datePattern" value="'.'yyyy-MM-dd_HH-mm" />
  <param name="file" value="data/log/myLogfile.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" />
  </layout>
  </appender>
  <root>
  <priority value="INFO" />
  <appender-ref ref="MeinAppender" />
  </root>
  </log4j:configuration>

最佳答案

您的类LogTeststdName包中,并且其构造函数具有package-private访问权限。看来Main类不在stdName之外的其他程序包中,因此编译器抱怨LogTest()构造函数在Main的程序包中不可见。将LogTest的构造函数更改为public。

07-24 21:29