【发布时间】:2015-03-13 00:54:47
【问题描述】:
我很好奇 Java 导入的工作原理。例如,我刚刚运行了这个示例 log4j 代码,但它没有编译:
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class log4jExample{
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(
log4jExample.class.getName());
public static void main(String[] args)
throws IOException,SQLException{
log.debug("Hello this is an debug message");
log.info("Hello this is an info message");
}
}
它给出了这个错误:
3 errors found:
File: C:\Users\adel\Desktop\various_topics\new_Java_Code\log4jExample.java [line: 1]
Error: package org.apache.log4j does not exist
File: C:\Users\adel\Desktop\various_topics\new_Java_Code\log4jExample.java [line: 13]
Error: cannot find symbol
symbol: class Logger
location: class log4jExample
File: C:\Users\adel\Desktop\various_topics\new_Java_Code\log4jExample.java [line: 13]
Error: cannot find symbol
symbol: variable Logger
location: class log4jExample
但后来我有了另一个类,它有这样的导入:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Level;
public class HelloWorldLog4J {
而且这个工作正常。我只是好奇,Java 实际上在哪里找到那些导入的库? 谢谢
【问题讨论】:
-
具体是什么编译错误?
-
What is a classpath? 答案大多是关于运行时类路径,但同样适用于编译时间。
-
导入的库在您的类路径中,log4j 类在 log4j jar 文件中。
-
@Rogue - 在 .我想我开始明白了,Sotirious 提供的链接有帮助
-
也许我不明白你的问题,但你的导入语句看起来像
import org.apache.log4j.Logger;,你说它不起作用但import org.apache.logging.log4j.Logger;起作用。请注意,您的导入缺少“log4j”之前的“日志记录”部分?这可能是您的不完整的原因,因为它不完整。