我正在尝试从命令行编译Java项目。该项目包含不同包中的类文件。如果我指定每个包的每个java文件,程序编译并运行正常。这是我的目录结构:
toplevel/
mainFile.java
level1/ (Contains fileA.java)
现在,如果我执行javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java
,则编译良好,我可以使用java toplevel/mainFile
运行它。
现在,如果在level1中创建一个名为“level2”的新文件夹并在其中创建一个“B”类,则新的目录结构将变为:
toplevel/
mainFile.java
level1/ (Contains fileA.java)
level2/ (Contains fileB.java)
为了编译这个,我必须这样做:
javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java toplevel/level1/level2/fileB.java
这变得越来越荒谬。是否有一个指令以递归方式编译每个包及其中的文件?
答案 0 :(得分:1)
您是否尝试过-sourcepath
标志。来自Oracle documentation,
-sourcepath sourcepath 指定源代码路径以搜索类或接口定义。与用户类路径一样,源路径条目由分号(;)分隔,可以是目录,JAR存档或ZIP存档。如果使用了包,则目录或存档中的本地路径名必须反映包名称。