javac编译的时候,为啥会把其他的.java文件也编译成.class
当前目录有两个文件
文件内容如下:
Student.java
public class Student
{
public Student()
{
System.out.println("testcode");
}
}
StuTest.java
public class StuTest
{
public static void main(String[] args)
{
Student s1 = new Student();
}
}
我执行javac StuTest.java
后,为啥会把Student.java
也给编译了一下啊?
我还以为会编译失败,应该先手动编译Student.java
,然后再编译StuTest.java
这样。
补充 另一种情况
步骤1 如上描述
当前目录:
第一次编译javac StuTest.java
,会将两个类都会编译,生成.class
步骤2
此时将StuTest.java
随便加一行注释,然后再javac StuTest.java
。却发现Student.java没有重新编译,.class
文件还是上次编译的时间。
为啥这次不会将Student.java
再重新编译一下了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为java隐含的classpath就有当前目录。于是你在当前目录下执行javac的时候,会从CLASSPATH中找到依赖的
Student
,进而一并编译。当在CLASSPATH中找不到依赖项的时候就会出错,此时你就需要添加
-cp
参数指定额外的classpath了补充一点另外一个回答中没提到的。