编译并运行这个java程序

时间:2010-01-29 03:12:28

标签: java

如何编译和运行以下程序:

Test1.java:

package A;

public class Test1
{
    public int a = 1;
}

Test2.java:

package B;

import A.*;

public class Test2
{
    public static void main(String [] args)
    {
        Test1 obj = new Test1();
        System.out.println(obj.a);
    }
}

我是新手包。 如果我使用javac *.java进行编译 并手动创建目录A,将Test1.class复制到其中并手动创建目录B并将Test2.class复制到其中,然后运行java B.Test2它可以工作。我确信这不是正确的做法。请建议。

5 个答案:

答案 0 :(得分:2)

您应该将.java文件保存在与您的包结构相匹配的目录结构中

所以Test1.java应该进入目录A. 所以Test2.java应该进入目录B

答案 1 :(得分:2)

您需要将java文件保存在正确的目录结构中:

A/Test1.java
B/Test2.java

通常只需在主类上调用javac即可,因为所有依赖项都将自动处理。在我说javac B/Test2.java后,它看起来像这样:

A/Test1.class
A/Test1.java
B/Test2.class
B/Test2.java

我可以使用java B.Test2运行程序。

如果仅仅在主类上运行javac是不够的,那么您可能需要构建系统。

答案 2 :(得分:2)

编译方式没有任何问题,这只是麻烦但肯定没有错。

话虽这么说,创建一个src目录来存储.java文件,使您的目录结构与类的包结构保持一致。在这种情况下,您将拥有src目录,并在其中,目录A和目录B.内部A放置Test1.java,内部B放置Test2.java

然后:

javac B/Test2.java

为什么选择Test2.java?因为它依赖于A,所以编译器足够聪明,首先编译A / Test1.java然后编译B / Test2.java。此时,您在A和B中有每个.class文件

运行它:

java B.Test2

答案 3 :(得分:0)

编译器将创建名为A和B的目录,并将.class文件放在其中。

您不需要手动将类文件复制到它们的包目录中,如果这样做,它可能不会起作用。

答案 4 :(得分:0)

这不是您问题的直接答案,但您可能想开始考虑使用IDE(其他人建议使用ant)。如果你刚刚开始,我会推荐jcreator,如果你想要一些好东西,我会推荐Eclipse。