Java,从文件导入类

时间:2015-03-17 02:59:49

标签: java windows class import

我正在编写一个java程序,并希望创建一个可以调用的类来快速登录到cmd(我还在我的测试阶段,计算出来的东西)。我有一个文件和一个包含另一个文件的文件夹。

  • LaunchProgram.java
  • helping
    • Dbg.class
    • Dbg.java

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

我不确定是什么导致了这种情况,而且我已经到处寻找这个但却无法找到解决方案。有谁知道导致这个问题的原因以及如何解决它?

2 个答案:

答案 0 :(得分:2)

  1. Dbg是一个类,而不是一个方法,因为它是一个帮助类,它不会有自己的main()方法。相反,它应该像log方法那样执行日志记录并由另一个类调用。

  2. 我怀疑你没有正确编译代码。您需要在包含LaunchProgram.java和目录helping的目录中执行此操作:

    javac helping/Dbg.java
    javac LaunchProgram.java
    

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

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

答案 1 :(得分:1)

以下是您尝试执行操作的更正代码:

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类的框架代码,它使用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");
    }
}

请注意,您不需要单独的类来记录,而是可以直接从记录消息所需的类中进行记录。