`

ant javac标签的debug属性

 
阅读更多
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

    NULL 博文链接:https://rooi.iteye.com/blog/1164734

    怎样让Ant编译生成的字节码带实际参数信息,不是arg0之类

    分析如下:Ant的debug和debuglevel参数会去调用JDK的javac -g参数, 而-g参数又包含3个选项, -g:{lines,vars,source},分别代表编译时向字节码中写入行号、方法局部变量信息、关联源代码信息。 这里主要说说-g:var...

    javac 源码 javac 源码

    javac 源码 javac 源码 javac 源码

    jocky 混淆编译 ant

    4. 当设置jocky的enable属性为true时,此时,Ant脚本中的javac编译命令,便会被自动替换成Jocky编译器;当设置enable属性为false时,javac编译命令将恢复成正常设置 二、jocky for eclipse 1. 将org.apusic.jocky_...

    ant.jar下载

    org.apache.tools.ant.taskdefs.Javac org.apache.tools.ant.taskdefs.Jikes org.apache.tools.ant.taskdefs.Mkdir org.apache.tools.ant.taskdefs.Patch org.apache.tools.ant.taskdefs.Sleep org.apache....

    JAVA_Ant详细介绍与应用

    包含文档和项目实例。 用Ant实现Java项目的自动构建和部署。...1.利用Ant的javac任务来编译java程序 2.使用Ant的java任务运行Java程序 3.使用Ant的jar任务生成jar文件 4.使用Ant的war任务打包J2EE Web项目 五.总结

    javac 的 源 代 码

    javac 源代码 javac 源代码 javac 源代码 javac 源代码 javac 源代码

    ant1.9资源

    Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。 同时,Ant还提供了一些它自己的内置属性,如下: basedir:project...

    jdk7 javac源码

    jdk7 javac源码

    javac的一些细节

    关于javac命令的一些细节,import、package等关键字,classpath选项。不用IDE时怎么组织代码进行编译

    javac源码免费下载

    javac源码免费下载,欢迎大家下载学习。

    java编译的javac.jar

    java编译的javac.jar

    java能执行,javac不能执行的原因

    jdk安装检验,java能执行,javac不能执行的原因

    ANT例子_5分钟马上学会ant手工布署项目

    ant例子说明 (先下载并解压ant,并将ant的bin目录放到系统变量中.cmd运行测试... 本例子写了delete,mkdir,javac,jar,java这几个最常用的命令。 参看本例子后,相信马上可以摆脱IDE的限制,自己布署web/桌面的java程序.

    apache-ant-1.9.3-src.tar

    虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。 Ant的优点 Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。 跨平台性。Ant是纯Java语言编写的,所...

    linux下 Error running javac compiler

    linux下 Error running javac compiler

    javac1.7源代码(完全版,可运行)

    javac1.7源代码,从openjdk1.7中剥离,可在eclipse中运行。附环境搭建说明。不成功可私信我。

    针对javac的命令错误,jdk环境变量设置方法

    针对javac不是内部命令的错误,简单有用的java环境变量设置法

    javac.jar

    OpenJDK javac1.7源码

Global site tag (gtag.js) - Google Analytics