编译并运行这个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编译并手动创建dir A,将Test1.class复制到其中并手动创建dir B并将Test2.class复制到其中,然后运行java B.Test2它可以工作。 我确信这不是正确的做法。 请建议。

您需要将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是不够的,那么你可能需要一个构建系统。

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

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

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

话虽这么说,创建一个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 

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

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

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