【问题标题】:Building Java package (javac to all files)构建 Java 包(javac 到所有文件)
【发布时间】:2010-03-01 14:30:10
【问题描述】:

如何将目录下的所有文件编译成*.class文件?

【问题讨论】:

  • 1) 见 makefile (或 ant 或 maven 或 ....) 2) 否

标签: java javac


【解决方案1】:

嗯,这似乎很明显,所以我可能遗漏了一些东西

javac *.java

(使用适当的库引用等)

或许:

javac -d bin *.java

为 javac 创建正确的输出目录结构。

您是否在寻找更复杂的东西?如果是这样,您能否提供更多详细信息(以及您所在的平台)?

【讨论】:

  • 所有子目录和降级目录中的所有 java 文件怎么样?
  • @Tom:发现这取决于操作系统。在 Unix 上使用 find 非常简单。在 Windows 上更难。
  • 所以我可能遗漏了一些东西:是的,编译时不应该在包目录中,因为这样就找不到在命令行上未明确命名的类(即这些在其他包中,不包含在编译器的引导路径中)。 javac super/package/dir/*.java 是正确的做法(可能添加 -d-cp 和/或 -sourcepath)。
  • 这可能不完整,因为我在 Windows 7 上得到“javac: file not found: *.java”。
  • @TomášZato:这意味着您在当前目录中没有任何.java 文件。没有源文件就很难编译源代码...
【解决方案2】:

这里描述了在 UNIX 上使用“查找”的另一种方式:

http://stas-blogspot.blogspot.com/2010/01/compile-recursively-with-javac.html

以下两个命令将编译目录./src及其子目录中包含的所有.java文件:

find ./src -name *.java > sources_list.txt
javac -classpath "${CLASSPATH}" @sources_list.txt

首先,find 生成 sources_list.txt,这是一个包含 Java 源文件路径的文件。接下来,javac 使用语法@sources_list.txt 编译所有这些源代码。

【讨论】:

【解决方案3】:

这是我用来构建整个项目的代码片段,其中,与往常一样,源文件位于深度嵌套的层次结构中,并且有许多 .jar 文件必须进入类路径(需要 UNIX 实用程序):

CLASSPATH=
for x in $(find | grep jar$); do CLASSPATH="$CLASSPATH:$x"; done
SRC=$(find | grep java$)
javac -cp "$CLASSPATH" $SRC

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多