Java,从文件导入 Class

Java, Import Class From File

我正在编写一个 java 程序并想制作一个 class 可以调用它来快速登录到 cmd(我仍处于测试阶段,计算东西出来)。我有一个文件和一个包含另一个文件的文件夹。

LaunchProgram.class的总结内容(相关内容):

import helping.Dbg;

public class LaunchProgram{
    public static void main(String[] args){
        Dbg("Testing");
    }
}

Dbg.class的内容:

package helping;

public class Dbg{
    public static void main(String message){
        System.out.println(message);
    }
}

当我在 cmd 中执行 javac Dbg.java 时,它运行时没有任何错误,生成 Dbg.class.

当我在 cmd 中执行 javac LaunchProgram.java 时,出现以下错误:

LaunchProgram.java:5: error: cannot find symbol
                Dbg("Testing");
                ^
symbol:   method Dbg(String)
location: class LaunchProgram

我不确定是什么原因导致的,我到处都找过这个问题,但找不到解决办法。有谁知道导致此问题的原因以及如何解决?

这是您尝试执行的更正代码:

public class LaunchProgram {
    public static void main(String[] args){
        Dbg.log("Testing");
    }
}

public class Dbg {
    public static void log(String message){
        System.out.println(message);
    }
}

但是 Apache log4j 是在您的应用程序中进行日志记录的更好方法。这是 LaunchProgram class 的框架代码,它使用 log4j 记录消息:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LaunchProgram {
    static final Logger logger = LogManager.getLogger(LaunchProgram.class.getName());

    public static void main(String[] args){
        logger.info("Testing");
    }
}

请注意,您不需要单独的 class 来登录,而是可以直接从 class 您需要记录消息的地方登录。

  1. Dbg 是一个 class,而不是一个方法,因为它是一个助手 class,所以它不会有一个 main() 方法它自己的。相反,它应该有类似 log 的方法来进行日志记录并由另一个 class.

  2. 调用
  3. 我怀疑您没有正确编译代码。您需要在包含 LaunchProgram.java 和目录 helping:

    的目录中执行此操作
    javac helping/Dbg.java
    javac LaunchProgram.java
    

    实际上你根本不需要第一行。第二行将编译两个 classes。这两个命令都会将相应的 .class 文件放入正确的目录中。然后给运行吧:

    java LaunchProgram
    

基本上,您应该始终位于包结构头部的目录中。