编译并运行这个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。