从同一个包中的类访问静态方法。主要()

时间:2013-04-26 18:08:46

标签: java

我以前从未尝试过这样做,而且有点沮丧。同一个包中有两个类:

package test;

public class One {
    public static String test () { return "hello world"; }
}   

package test;

public class Two {
    public static void main (String[] args) {
        System.out.println(One.test());
    }
}

如果我在 test /目录中尝试javac Two.java ,我会找到One的“找不到符号”。但是,如果我从父目录javac test/Two执行此操作,它会编译,然后可以运行java test/Two - 但不能再从内部运行(抛出 NoClassDefFoundError 说该类的正确名称为test/Two,而非Test)。

不是什么大不了的事,但如果有更好的解决办法,并且如果有人能帮助我理解这个问题,那就很好奇。我实际上不需要“Two”成为测试包的正式成员,我只需要将它放在同一目录中并在那里编译。

1 个答案:

答案 0 :(得分:3)

您需要使用以下命令从父目录编译

javac test/Two.java test/One.java

(您可能还想使用-d来说明您希望类文件的最终位置。请注意,可以只编译test/One.java并让编译器查找它所依赖的类,但我发现只需指定要编译的所有源代码就更清晰了。)

使用包限定的类名运行

java test.Two