在抛出一些开源程序的源代码时,我意识到有些项目的源代码文件中有.class和.java!我知道.class是一个已经编译好的.java文件,而.class是二进制文件但是可以在项目中编译和编译未编译的文件吗?如果是,那为什么这样做?有什么好处?
长话短说:我正在尝试在不同的项目中学习测试类,在那里我意识到某些程序在(build)文件夹下有测试文件,其中.class作为扩展名!这些类的行为是否与位于具有.java
扩展名的测试包下的测试类不同?
无论如何反编译它们?
感谢
答案 0 :(得分:1)
类文件和Java文件共享由包结构定义的相同子目录结构。
像eclipse这样的IDE允许您将类文件放入与相应源文件相同的文件夹中,或放入另一个(重复的)文件夹结构中。
我认为,您选择的这些选项中的哪一个是品味问题。
答案 1 :(得分:1)
事实上,如果你运行java编译器(javac
)而没有指定' -d'用于指示放置生成的类的特定目录的选项,默认情况下,它将它们放在与源文件相同的目录中。
这样做没有冲突,因为javac
编译器和jvm启动器(java
)没有查看相同的文件扩展名。
但是,通常认为将生成的类文件放在项目下的单独文件夹中是最佳做法:classes,bin等。