当前位置: 首页 > 面试题库 >

javac选项以递归方式编译给定目录下的所有java文件

壤驷瑾瑜
2023-03-14
问题内容

我正在使用javac编译器来编译项目中的Java文件。这些文件分布在几个包像这样: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使用@前缀将文件名传递给。

如果你可以创建*.java项目中所有文件的列表,则很简单:

# Linux / MacOS
$ find -name "*.java" > sources.txt
$ javac @sources.txt

:: Windows
> dir /s /B *.java > sources.txt
> javac @sources.txt

优点是这是一种快速简便的解决方案。
缺点是,sources.txt每次创建新的源或重命名现有的文件时,都必须重新生成文件,这很容易忘记(因此容易出错)并且很繁琐。
使用构建工具
从长远来看,最好使用专门用于构建软件的工具。


Using Ant

如果创建build.xml描述如何构建软件的简单文件:

<project default="compile">
    <target name="compile">
        <mkdir dir="bin"/>
        <javac srcdir="src" destdir="bin"/>
    </target>
</project>

你可以通过运行以下命令来编译整个软件:

$ ant
  • 好处是你正在使用易于扩展的标准构建工具。
  • 缺点是你必须下载,设置和学习其他工具。请注意,大多数IDE(例如NetBeansEclipse)都对编写构建文件提供了强大的支持,因此在这种情况下你无需下载任何内容。
    使用Maven
    Maven的设置和使用并不是那么简单,但是学习它很有意义。这是一个很棒的教程,可以在5分钟内启动一个项目。

(对我而言)主要优点是它也可以处理依赖项,因此你无需再下载任何Jar文件并手动管理它们,我发现它对构建,打包和测试较大的项目更有用。
缺点是它的学习曲线很陡峭,并且如果Maven插件喜欢抑制错误:-)另一件事是,很多工具也可以在Maven存储库中运行(例如Sbt用于Scala,Ivy用于Ant,Gradle用于Groovy) 。

使用IDE

现在,什么可以提高你的开发效率。有一些开源替代方案(例如Eclipse和NetBeans,我更喜欢前者),甚至还有商业化的替代方案(例如IntelliJ),它们非常受欢迎且功能强大。

他们可以在后台管理项目建设,因此你不必处理所有命令行内容。但是,如果你知道后台实际发生的情况,那么总是很方便的,这样你就可以找出诸如的偶然错误ClassNotFoundException



 类似资料:
  • 本文向大家介绍java递归读取目录下所有文件的方法,包括了java递归读取目录下所有文件的方法的使用技巧和注意事项,需要的朋友参考一下 java递归读取目录下的所有文件(包含子目录下的所有文件)大概思路如下:通过file.listFiles()方法获取目录下的所有文件(包含子目录下的所有文件),得到files[]数组,然后遍历得到的所有文件,通过isFile(文件)和isDirectory(文件夹

  • 问题内容: 我正在尝试获取目录及其子目录中所有文件的列表。我当前的递归方法如下: 但是,我希望有一种非递归的方式(可能是现有的API调用)来执行此操作。如果不是,这是最干净的方法吗? 问题答案: 您始终可以使用堆栈(对于DFS)或队列(对于BFS)将迭代解决方案替换为迭代解决方案:

  • 本文向大家介绍nodejs 递归拷贝、读取目录下所有文件和目录,包括了nodejs 递归拷贝、读取目录下所有文件和目录的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下nodejs 递归拷贝目录下所有文件和目录,具体代码如下所示: ps:下面看下Nodejs递归读取目录下的所有文件 递归读取当前目录下的所有文件。 总结 以上所述是小编给大家介绍的nodejs 递归拷贝、读取目录下所有文件和目

  • 问题内容: 我正在做一个非常大的项目,该项目在多个目录中都有关联的类文件,所有文件都来自于根目录src。 我正在尝试在src \ solution \中编译文件(称为Console.java),该文件使用src中其他目录的导入,这些目录仍未编译。 因此,如果我想在IDE之外编译Console.java,我该怎么做?哦,是的,我也有一些外部JAR需要包含在构建中。 谢谢!我很感激! 问题答案: 我将

  • 问题内容: 我正在编译一个具有package语句的程序。例如 我也有一个与package语句匹配的现有目录结构。 如何防止javac编译器在预先存在的目录结构中创建相同的目录结构?即 在我看来,编译器应该足够“聪明”,可以在创建目录结构之前先对其进行检查。 谢谢 问题答案: 通常,编译器期望源文件并根据包结构输出类文件。 如果不提供任何选项(或未提供任何sourcepath),则相对于当前目录搜索

  • 问题内容: 我有此功能,以递归方式打印目录中所有文件的名称。问题是我的代码很慢,因为它每次迭代都必须访问远程网络设备。 我的计划是先从目录中递归加载所有文件,然后再使用正则表达式遍历所有文件,以过滤掉我不需要的所有文件。有谁有更好的建议? 这只是稍后的测试,我将不使用这样的代码,而是将与高级正则表达式匹配的每个文件的路径和修改日期添加到数组中。 问题答案: 假设这是你将要编写的实际生产代码,那么我