gpt4 book ai didi

java - 包 <名称> 不存在错误

转载 作者:行者123 更新时间:2023-12-01 18:45:48 25 4
gpt4 key购买 nike

我在各自的文件中有来自一本书的以下示例代码,每个文件与其中定义的接口(interface)或类具有相同的名称:

Logger.java

package logging;

public interface Logger
{
boolean connect();
boolean disconnect();
boolean log(String msg);
}

LoggerFactory.java

package logging;

public abstract class LoggerFactory
{
public final static int CONSOLE = 0;
public final static int FILE = 1;

public static Logger newLogger(int dstType, String... dstName)
{
switch (dstType)
{
case CONSOLE: return new Console(dstName.length == 0 ? null : dstName[0]);
case FILE : return new File(dstName.length == 0 ? null : dstName[0]);
default : return null;
}
}
}

Console.java

package logging;

class Console implements Logger
{
private String dstName;

Console(String dstName)
{
this.dstName = dstName;
}

@Override
public boolean connect()
{
return true;
}

@Override
public boolean disconnect()
{
return true;
}

@Override
public boolean log(String msg)
{
System.out.println(msg);
return true;
}
}

文件.java

package logging;

class File implements Logger
{
private String dstName;

File(String dstName)
{
this.dstName = dstName;
}

@Override
public boolean connect()
{
if (dstName == null)
return false;
System.out.println("opening file " + dstName);
return true;
}

@Override
public boolean disconnect()
{
if (dstName == null)
return false;
System.out.println("closing file " + dstName);
return true;
}

@Override
public boolean log(String msg)
{
if (dstName == null)
return false;
System.out.println("writing "+msg+" to file " + dstName);
return true;
}
}

TestLogger.java

// package logging;

import logging.Logger;
import logging.LoggerFactory;

public class TestLogger
{
public static void main(String[] args)
{
Logger logger = LoggerFactory.newLogger(LoggerFactory.CONSOLE);
if (logger.connect())
{
logger.log("test message #1");
logger.disconnect();
}
else
System.out.println("cannot connect to console-based logger");
logger = LoggerFactory.newLogger(LoggerFactory.FILE, "x.txt");
if (logger.connect())
{
logger.log("test message #2");
logger.disconnect();
}
else
System.out.println("cannot connect to file-based logger");
logger = LoggerFactory.newLogger(LoggerFactory.FILE);
if (logger.connect())
{
logger.log("test message #3");
logger.disconnect();
}
else
System.out.println("cannot connect to file-based logger");
}
}

所有这些文件都位于名为 logger 的文件夹内。书上说执行javac TestLogger.java应该在logger目录中找到并编译所有必需的类文件,但我收到错误

TestLogger.java:3: error: package logging does not exist
import logging.Logger;
^

其次是其他错误,主要与无法找到logging包有关。为什么这个程序不能编译?我尝试创建指向 logging 的父文件夹的 CLASSPATH 系统变量并尝试
javac -classpath "parent_folder_of_logging"TestLogger.java 但没有任何效果。这里出了什么问题以及如何修复它?

最佳答案

转到日志记录的父文件夹并执行:

 javac logging/TestLogger.java

要在同一文件夹中执行

 java logging.TestLogger

关于java - 包 <名称> 不存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com