ant里javac的属性
debug: 当值未为true时产生调试信息
当使用ant脚本编译java文件时,需要注意,设置javac命令的属性debug属性为true。
如果出现Unknown Source这样的问题,估计是编译的时候debug设置的false。
Unknown Source,顾名思义,就是未知的源文件。因为我们最终解释运行的是class文件,所以出现这个问题的原因很简单,就是class文件中没有源文件的相关调试信息。那为什么class文件会没有调试信息呢?答案更简单,当然是我们在用javac命令进行编译的时候没有指定调试信息呗。因为现在很多人都习惯用eclipse等一些现成的ide进行编写代码,所以很少人熟悉jdk自己的javac,java,jdb等一些命令的详细参数(jdk的一些命令和eclipse自带的一些命令可能不同)。哈哈,不过如果你经常在linux下玩java的话,命令肯定会非常熟悉。那么让我们看看javac的一些重要参数:
-g-Generate all debugging information, including local variables. By default, only line number and source file information is generated.在class文件中生成所有调试信息,包括局部变量的信息。默认的话,只写入源码的行号和源文件信息。
-g:none-Do not generate any debugging information.不生成任何调试信息。
-g:(lines,vars,source)-只生成部分调试信息(源码行号,变量,源文件信息)。那我们在分别介绍下lines,vars,source的含义。
lines:将源文件中的行号信息写到Class文件中,此属性用于在Class文件中生成方法字节码流偏移量和源代码行号之间的映射关系。如果我们不指定此属性的话,我们将在堆栈异常信息中看不到打印的行号。
vars:Local variable属性建立了方法的栈帧中局部变量部分内容与源代码中局部变量名称和描述符之间的映射关系。有了这个属性,调试时,我们才可以看到变量的值。
source:编译时指定了这个属性,会把源文件的属性信息如源文件名称写入class文件。
说了这么多,初学者可能会迷糊,为什么编译要指定这些调试信息呢?哈哈,如果编译不指定这些调试信息的话,你怎么调试呢?如果你不指定行号信息的话,你在ide中都无法插入断点。这些调试信息在我们调试程序的时候非常重要。不过这些编译选项通常在ide中如eclipse中早已默认了。有的人可能还不相信,打开eclipse,依次打开菜单选项:Window->Preferences->Java->Compiler,可以看到页面的下方有一个Classfile Generation,默认是四个选项都选的。
那这个Unknown Source到底是编译的时候没有指定哪一项呢?经过测试,我发现是javac编译的时候没有没有指定source选项,必定出Unknown Source这个问题。
分享到:
相关推荐
标题“Using the ant javac adapter”涉及到的是在Java开发中如何使用Ant构建工具与Javac编译器适配器的技巧。Ant是Apache软件基金会的一个开放源代码项目,它是一个基于Java的构建工具,类似于Make,但依赖于XML来...
分析如下:Ant的debug和debuglevel参数会去调用JDK的javac -g参数, 而-g参数又包含3个选项, -g:{lines,vars,source},分别代表编译时向字节码中写入行号、方法局部变量信息、关联源代码信息。 这里主要说说-g:var...
### ant标签详解 #### 1. `<project>` 标签 `<project>` 标签是构建文件的基础,每一个构建文件都有一个对应的项目,并且此标签作为构建文件的根节点。`<project>` 标签支持多种属性: - **default**:指定构建...
<javac srcdir="${src.dir}" destdir="${build.dir}" debug="on"> </javac> ``` 8. `<jar>`:打包Java类文件到JAR文件,例如: ```xml ${dist.dir}/myapp.jar" basedir="${build.dir}"> ``` 9...
通过这些任务,Ant可以调用Java编译器(javac)、Java文档生成器(javadoc)等工具,实现项目的自动化构建。 四、Ant的安装与使用 Ant的安装非常简单,只需将解压后的Ant目录添加到系统路径即可。开始使用Ant,...
在 Ant 构建工具中,`<project>` 标签是构建文件的根元素,它定义了一个项目的基本属性,如项目的默认目标、基准目录等。具体而言: - **default**:此属性用于指定构建过程中默认执行的目标(target)。它是 `...
`bin`目录通常用于存放编译后的class文件,这与`<javac>`标签的`destdir`属性相对应。在实际项目中,`build.xml`文件可能会配置Ant将编译结果输出到这个目录。 `xsd`文件扩展名通常代表XML Schema Definition,它是...
5. **调试Ant任务**:使用`-verbose`或`-debug`选项运行Ant,以便获取更详细的日志输出,帮助定位问题所在。 6. **检查环境变量**:确保Java开发环境已正确设置,包括JAVA_HOME和ANT_HOME环境变量。 7. **使用Ant...
Ant提供了丰富的标签和属性来支持各种构建需求,通过合理的组织和配置这些标签,可以高效地完成复杂的构建任务。在实际开发中,根据项目需求选择合适的标签并合理配置它们的属性至关重要。例如,在部署Web应用程序时...
### Ant配置文件标签详解 #### 1. `<project>` 标签 - **定义**:构建文件中的根标签,代表整个构建项目。 - **属性**: - `default`:必需属性,指定了构建文件中默认执行的目标(target)名称。 - `basedir`:...
- **定义属性**:属性可以使用 `<property>` 标签在构建文件中定义,例如:`<property name="version" value="1.0" />`。 - **引用属性**:使用 `${name}` 的格式来引用属性,例如:`${version}`。 - **预定义属性**...
7. **运行Ant命令**:在命令行中,输入`ant clean`清理项目,`ant compile`编译代码,`ant test`运行测试,`ant debug`或`ant release`打包APK。这些命令会根据`build.xml`中的配置执行相应的操作。 8. **测试结果*...
- 要运行 Ant,只需在命令行输入 `ant`,默认会查找当前目录下的 `build.xml` 文件并执行其中的默认目标(由 `<project>` 标签的 `default` 属性指定)。 - 可以通过 `-buildfile` 参数指定不同的构建文件,或者...
- javac任务:用于编译Java源代码,可以设置源代码目录(srcdir)、目标目录(destdir)、是否开启调试信息(debug)等属性。 ```xml <javac srcdir="temp/src" destdir="temp/build" debug="on" deprecation=...
- **设置属性**:例如`ant -buildfile test.xml -Dbuild=build/classes dist`,设定`build`属性的值为`build/classes`,同时执行`dist`目标。 #### 编写build.xml `build.xml`是Ant的核心配置文件,其中包含了项目...
- `-debug`:打印调试信息。 - `-emacs`:生成无修饰的记录信息。 - `-logfile file`:指定日志输出文件。 - `-logger classname`:指定执行日志记录的类。 - `-listener classname`:添加项目监听器实例。 - `-find...
- 编写构建脚本:使用XML标签定义任务,如`<project>`、`<target>`、`<taskdef>`、`<property>`等。 - 执行构建:在命令行中输入`ant [target]`,其中`target`为可选,若不指定,默认执行第一个目标。 4. 常用...
- **属性(Properties)**:属性是Ant中非常重要的概念,它可以存储配置信息或动态生成的值。例如,可以定义一个名为`src.dir`的属性来表示源代码目录的路径。 - **条件表达式**:Ant还支持条件表达式,可以根据不同的...
Ant通过<javac>任务来编译Java源码。它指定了源代码目录、输出目录以及编译选项。对于Android项目,还需要指定对Android库的依赖。 5. **资源处理** Android应用的资源(如图片、布局文件等)需要通过aapt工具...
### Apache Ant 学习与总结 #### 一、Ant 是什么? Apache Ant 是一款基于 Java 的构建工具,用于将源代码和其他输入文件转换为可执行文件或安装包等形式。随着软件项目的复杂度增加,确保每次构建都能使用相同的...