Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多个目录编译java_Java_Javac - Fatal编程技术网

从多个目录编译java

从多个目录编译java,java,javac,Java,Javac,我正在尝试从Windows、Mac或Linux上的不同目录编译多个.java程序。。。e、 g.命令或终端。没关系 然而,我相信你们中的许多人都熟悉Netbeans如何将文件存储在不同的文件夹中。我一直在把不同的概念放在不同的文件夹中,现在我想运行它们 例如,我的一个国际象棋程序看起来有点像这样: /Chess /build /classes /chess /Chess.class /colo

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

然而,我相信你们中的许多人都熟悉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
中)编译所有文件(因为否则我会得到一个
找不到符号的
错误。因为当我在
src
中运行
javac*.java
时,我会得到一个
找不到的文件
,所以我不知所措

提前感谢,


Dylan

它不会一次性编译。实际上,您的
src
目录不包含任何.java文件,因此不会以那种方式编译

恐怕您必须通过更改
src
文件夹下的路径来执行此操作

您必须为每个
国际象棋
颜色
游戏
等目录执行相同的操作

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

正如David Ehrmann在您的评论中所建议的那样,您可以使用
javac$(find.-name'*.java')
一次性编译


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

javac*.java编译当前目录中的所有java文件。在您的情况下,由于基于包有不同的文件夹层次结构,您无法一次性实现这一点。您最多可以在每个文件夹上运行javac*.java命令。

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

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


这真的不是最好的方法。再次尝试maven。为基本项目进行设置非常简单,您的IDE通常也具有为您创建maven项目的功能。

要在同一文件夹中编译多个具有不同包名的文件,请使用

javac -d . *.java javac-d.*.java
你会考虑使用一个像蚂蚁或Maven之类的程序来在命令行上编译你的类吗?@ JorgeCampos是正确的,但是如果你坚持不这么做,<代码> javac $(find .No.*.java)< /COD>我从来没有用过这些,因为我从来没有……我可以对它们做一些研究。他们允许我做我想做的事。(当然,我真的可以从Netbeans IDE运行该程序……甚至可以将所有内容放入.jar中,然后使用.bat文件运行它……但我想从cmd或terminal学习)当你要求在Windows、Mac或Linux不同的平台上执行此操作时,你必须为每个平台编写一个bash/bat脚本,或者使用我提到的其中一个工具,如果安装正确,它可以在任何平台上运行。现在它在Mac终端中…将来它将在Windows cmd.exe和Ubuntu终端上运行。:)你不是必须在一行中编译所有内容吗?或者这不正确吗?好吧!听起来很合理。
-name
只是当前目录的名称吗(在本例中为“src”)?@dyl指定您要搜索的文件名!那么
做什么?这不是指定要搜索的文件吗?这只是基本目录还是什么?@dyl-
是表示当前目录的方式/语法。它表示您的
src
目录!这不起作用。