eup*_*a83 78 java compilation directory-structure javac
用例很简单.我得到了使用Eclipse创建的源文件.因此,有一个深层目录结构,任何Java类都可以引用同一个子,兄弟或父文件夹中的另一个Java类.
如何使用javac从终端编译整个东西?
Man*_*pta 54
您必须知道所有目录,或者能够使用通配符..
javac dir1/*.java dir2/*.java dir3/dir4/*.java dir3/dir5/*.java dir6/*src/*.java
Run Code Online (Sandbox Code Playgroud)
Dan*_*rov 47
使用Bash 4,您可以启用globstar
shopt -s globstar
Run Code Online (Sandbox Code Playgroud)
然后呢
javac **/*.java
Run Code Online (Sandbox Code Playgroud)
Bha*_*tri 38
如果您只想运行主类(不编译.java
主类不依赖的文件),那么您可以执行以下操作:
cd <root-package-directory>
javac <complete-path-to-main-class>
Run Code Online (Sandbox Code Playgroud)
要么
javac -cp <root-package-directory> <complete-path-to-main-class>
Run Code Online (Sandbox Code Playgroud)
javac
将自动解析所有依赖项并编译所有依赖项.
小智 12
以下是我发现的方法:
1)在文件中创建具有相对路径的文件列表(比如FilesList.txt),如下所示(空格分隔或行分隔):
foo/AccessTestInterface.java
foo/goo/AccessTestInterfaceImpl.java
Run Code Online (Sandbox Code Playgroud)
2)使用命令:
javac @FilesList.txt -d classes
Run Code Online (Sandbox Code Playgroud)
这将编译所有文件并将类文件放在classes目录中.
现在创建FilesList.txt的简单方法是:转到源根目录.
dir *.java /s /b > FilesList.txt
Run Code Online (Sandbox Code Playgroud)
但是,这将填充绝对的道路.使用文本编辑器"全部替换"到源目录的路径(包括\到最后)和""(即空字符串)和保存.
您必须使用类似Ant的内容来分层次地执行此操作:
http://ant.apache.org/manual/Tasks/javac.html
您需要使用名为compile的目标创建一个构建脚本,其中包含以下内容:
<javac sourcepath="" srcdir="${src}"
destdir="${build}" >
<include name="**/*.java"/>
</javac>
Run Code Online (Sandbox Code Playgroud)
然后你就可以通过运行来编译所有文件:
ant compile
Run Code Online (Sandbox Code Playgroud)
或者,将项目导入Eclipse,它将自动编译该项目的所有源文件.
已经存在的答案似乎只关注自己的*.java文件本身,而不是如何轻松地使用构建可能需要的库文件.
一个很好的单行情况,以递归方式获取所有*.java文件以及包含构建所需的*.jar文件:
javac -cp ".:lib/*" -d bin $(find ./src/* | grep .java)
Run Code Online (Sandbox Code Playgroud)
这里bin文件是类文件的目标,lib(可能是当前工作目录)包含库文件,并且编译src目录和下面的所有java文件.
归档时间: |
|
查看次数: |
128126 次 |
最近记录: |