从多个目录编译java

时间:2014-07-20 04:41:05

标签: java javac

我正在尝试从Windows,Mac或Linux上的不同目录编译多个.java程序... cmd或终端。没关系。

但是,我确信你们中的许多人都熟悉Netbeans如何将文件存储在不同的文件夹中。我一直把不同的概念放到不同的文件夹中,现在我想运行它们。

例如,我看过的国际象棋程序有点像这样:

/Chess
    /build
        /classes
            /chess
                /Chess.class
            /color
                /colorHelper.class
            /game
                /Board.class
                /Game.class
                /GameManager.class
                /Player.class
            ... etc. (the rest of the directories with .class files)
    /build.xml
    /gameLog.txt
    /manifest.mf
    /nbproject
        ... (some xml and .properties files)
    /src
        /chess
            /Chess.java
        /color
            /ColorHelper.java
        /game
            /Board.java
            /Game.java
            /GameManager.java
            /Player.java
        ... etc. (the rest of the directories with .java files)

所以,我的问题是,如何使用javac *.java(可能在/src中)编译所有文件(因为否则我会收到cannot find symbol错误。 file not found当我在javac *.javasrc运行时,我感到很茫然。

提前致谢,

迪伦

4 个答案:

答案 0 :(得分:1)

它不会一次编译。实际上,你的src目录不包含任何.java文件,所以它不会以这种方式完成!

我担心您必须通过更改src文件夹下的路径来执行此操作。

您必须为每个chesscolorgame等执行此操作。目录实现相同。

因此,在每次运行时更改路径或按照注释中的建议进行,以实现所有java文件的编译。

正如David Ehrmann在您的评论中提出的那样,您可以通过使用javac $(find . -name '*.java')一次编译来实现。

它将编译您当前目录(src(.))下的所有.java文件。

答案 1 :(得分:0)

javac * .java编译当前目录中的所有Java文件。在您的情况下,由于您根据包具有不同的文件夹层次结构,因此无法一次完成此操作。最多可以在每个文件夹上运行命令javac * .java。

答案 2 :(得分:0)

您应该尝试使用maven或ant等自动构建系统。它允许您使用单个命令构建项目。它甚至允许运行单元测试,并将您的应用程序打包为jar(或您喜欢的任何包)。

如果你真的不想使用其中一个,你仍然可以使用一个(虽然冗长)命令。 * .java只是文件路径中的通配符。它查找当前目录中以.java结尾的所有文件。在linux上你可以试试这样的find -name "*.java" | xargs javac。第一部分是一个find命令,它以递归方式搜索以.java结尾的所有文件。这个管道是xargs的文件列表,它们将它们作为java命令的单独参数添加。

这真的不是最好的方式。再试一次,试试maven。设置基本项目非常简单,您的IDE通常还有一个为您创建maven项目的功能。

答案 3 :(得分:0)

在同一个文件夹中编译多个包含不同包名的文件

javac -d . *.java