我正在使用javac编译器来编译项目中的Java文件。这些文件分布在几个包像这样:com.vistas.util,com.vistas.converter,com.vistas.LineHelper,com.current.mdcontect。
com.vistas.util,com.vistas.converter,com.vistas.LineHelper,com.current.mdcontect
这些软件包中的每一个都有几个java文件。我正在使用像这样的javac:
javac com/vistas/util/*.java com/vistas/converter/*.java com.vistas.LineHelper/*.java com/current/mdcontect/*.java
(一行)
除了提供这么多路径之外,我如何要求编译器递归地编译来自父com目录的所有Java文件?
我还建议使用某种构建工具(Ant或Maven,已经建议使用Ant,并且更容易入门)或处理该编译的IDE(Eclipse使用增量编译和协调策略,你甚至不必请务必按任何“编译”按钮)。
Using Javac
如果你需要尝试进行更大的项目,并且附近没有任何合适的构建工具,则可以随时使用一个javac提供的小技巧:可以在文件中指定要编译的类名。你只需要javac使用@前缀将文件名传递给。
javac
如果你可以创建*.java项目中所有文件的列表,则很简单:
*.java
# Linux / MacOS $ find -name "*.java" > sources.txt $ javac @sources.txt :: Windows > dir /s /B *.java > sources.txt > javac @sources.txt
优点是这是一种快速简便的解决方案。 缺点是,sources.txt每次创建新的源或重命名现有的文件时,都必须重新生成文件,这很容易忘记(因此容易出错)并且很繁琐。 使用构建工具 从长远来看,最好使用专门用于构建软件的工具。
sources.txt
Using Ant
如果创建build.xml描述如何构建软件的简单文件:
build.xml
<project default="compile"> <target name="compile"> <mkdir dir="bin"/> <javac srcdir="src" destdir="bin"/> </target> </project>
你可以通过运行以下命令来编译整个软件:
$ ant
NetBeans
Eclipse
(对我而言)主要优点是它也可以处理依赖项,因此你无需再下载任何Jar文件并手动管理它们,我发现它对构建,打包和测试较大的项目更有用。 缺点是它的学习曲线很陡峭,并且如果Maven插件喜欢抑制错误:-)另一件事是,很多工具也可以在Maven存储库中运行(例如Sbt用于Scala,Ivy用于Ant,Gradle用于Groovy) 。
Maven
Scala,Ivy
Ant,Gradle
Groovy
使用IDE
现在,什么可以提高你的开发效率。有一些开源替代方案(例如Eclipse和NetBeans,我更喜欢前者),甚至还有商业化的替代方案(例如IntelliJ),它们非常受欢迎且功能强大。
他们可以在后台管理项目建设,因此你不必处理所有命令行内容。但是,如果你知道后台实际发生的情况,那么总是很方便的,这样你就可以找出诸如的偶然错误ClassNotFoundException。
ClassNotFoundException