`

Ant编译无响应问题

阅读更多
前些日子因为要搞自动编译需要用到Ant执行相关操作。Ant以前经常用,常常用来编译、打包、部署,以及用它来生成javadoc。可现如今,没想到Ant反倒给我出了一个不大不小的难题——编译失败且无任何提示!
大概4年以前,当时Eclipse还没有现在这么强大,对于打jar、war还不方便,我们经常使用Ant辅助Eclipse来完成这些操作,不曾记得有这些个古怪的问题。
先看build.xml
<javac srcdir="${src.dir}"
       destdir="${classes.dir}"
       encoding="UTF-8"
       source="1.6"
       target="1.6"
       debug="true"
>
	<classpath refid="build.classpath" />
</javac>


这里没有列出详细的build.xml,仅分析上述代码,只要路径正确,依赖包存在,编译应当正常通过。倘若路径、依赖包出现问题,至少能在控制台中获得相应提示。但是,问题还是出现了,执行上述任务,在控制台得不到任何提示,无法确认编译是否成功!
控制台输出结果:
引用

Buildfile: D:\work\workspace\xyz\build\build.xml
clean:
     [echo] Clean
   [delete] Deleting directory D:\work\workspace\xyz\build\classes
init:
     [echo] Init
    [mkdir] Created dir: D:\work\workspace\xyz\build\classes
compile:
     [echo] Compile
    [javac] Compiling 120 source files to D:\work\workspace\xyz\build\classes


控制台输出到此,什么提示也没有了,很诡异!
同样的build.xml在别的项目中就没有任何问题。
仔细检查classes目录,文件正常编译。
经过代码检查,发现非规范代码应用,如:
Date d = new Date("2009-01-01");

在JDK 1.1中,该构造函数被废弃,即加入了“@Deprecated”标识。
同理,代码中调用了废弃的方法,或某个类加上了废弃“@Deprecated”标识,都会有这个问题。不曾想到Ant居然对这些废弃标识有如此要求!
设想加入“-Xlint:unchecked -Xlint:deprecation”编译参数。
<javac srcdir="${src.dir}"
       destdir="${classes.dir}"
       encoding="UTF-8"
       source="1.6"
       target="1.6"
       debug="true"
       deprecation="false"
       optimize="false"
       failonerror="true"
>
	<classpath refid="build.classpath" />
	<compilerarg value="-Xlint:unchecked -Xlint:deprecation" />
</javac>

未果!看来只能对现有代码一一清理了!
去除所有非规范依赖应用,将废弃类代码清理,继续编译,未果!
发现代码中部分有非规范泛型应用,如下所示:
Enumeration headerNames = request.getHeaderNames();

这里没有强制使用泛型转换,导致编译失败,可加入“@SuppressWarnings("unchecked")”标识。
对代码一一排查,针对所有“黄标签”代码进行修正。
重新编译,通过!
引用

Buildfile: D:\work\workspace\xyz\build\build.xml
clean:
     [echo] Clean
   [delete] Deleting directory D:\work\workspace\xyz\build\classes
init:
     [echo] Init
    [mkdir] Created dir: D:\work\workspace\xyz\build\classes
compile:
     [echo] Compile
    [javac] Compiling 120 source files to D:\work\workspace\xyz\build\classes
BUILD SUCCESSFUL
Total time: 7 seconds



以前使用Ant都是针对新系统,代码要求极为严格,尤其是对于“黄标签类”有着很严格的要求,在提交代码时就有可能被清理掉。但此次主要是对遗留系统做相关调整,难免遇到这些奇怪的问题。
这也告诫大家,在书写代码时尽量按照相关规范书写:避免使用废弃的方法、类,避免声明无用变量。在使用聚合类时,注意使用泛型。如果泛型不明确,可强制使用“@SuppressWarnings("unchecked")”标识。

如果大家遇到此类问题可以参考上述方法对症下药,最关键之处还是在于代码的规范编写!
5
2
分享到:
评论
3 楼 louis0911 2012-03-22  
我也是这个问题,找了半天,试试您的方法,不过代码量很多的情况一下一个个的改是不是太麻烦了,    
2 楼 snowolf 2010-01-18  
http://grandboy.iteye.com/admin/blogs/235606
grandboy 写道
既然是正常运行的系统,代码不改应该也能正确编译。 请参考:
http://grandboy.iteye.com/admin/blogs/235606

诡异的问题就是同样的build.xml在不同的项目有着不同的结果,就算是都有“黄标签代码”一个无响应,一个给出警告!
1 楼 grandboy 2010-01-18  
既然是正常运行的系统,代码不改应该也能正确编译。 请参考:
http://grandboy.iteye.com/admin/blogs/235606

相关推荐

    awesome-vue-ts-admin:一个基于typesciprt + vue + electronic的中台管理系统

    基于ant-design-vue ,美观大方,简洁明亮 响应式架构,在移动端可以正常使用 tab缓存页面,可以同时打开多个路由,并随意切换和关闭 进入electron桌面应用,多窗口多页面管理 后台使用vuex/orm/localforage作为数据...

    Eclipse+Web开发从入门到精通(实例版)

    4.3.4 使用编译任务编译Java 类实例... 69 4.3.5 使用Java 任务执行Java 类实例... 70 8.1 下载并安装 Hibernate Synchronizer 插件... 142 8.2 图书管理系统需求分析... 143 8.3 配置数据库... 143 ...

    New of GWT Introduction--GWT开发快速入门

    简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。 Ajax并不是本文的中心关注点,因此这里不再赘述,请大家访问参考资源区的相关链接,了解更多关于Ajax技术和应用方面的...

    flex3的cookbook书籍完整版dpf(包含目录)

    使用mxmlc和Ant编译Flex应用程序 25.10节. 使用ASDoc和Ant生成文档 25.11节. 使用Rake编译Flex应用程序 25.12节. 使用ExpressInstall 25.13节. 使用Flex Builder 3的Memory Profiling查看内存快照 第二十六章...

    新版Android开发教程.rar

    o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your ...

    Java语言基础下载

    Ant构建文件 659 配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误...

    Eclipse权威开发指南3.pdf

    8.6.3 使用并发性架构维持对用户的快速响应..... 210 8.6.4 通过功能组管理用户界面..... 210 8.6.5 扩展Workbench集成开发环境..... 211 8.7 本章小结...... 212 8.8 参考文献...... 212 第9章 插件...

    Eclipse权威开发指南2.pdf

    8.6.3 使用并发性架构维持对用户的快速响应..... 210 8.6.4 通过功能组管理用户界面..... 210 8.6.5 扩展Workbench集成开发环境..... 211 8.7 本章小结...... 212 8.8 参考文献...... 212 第9章 插件开发入门 213...

    Eclipse权威开发指南1.pdf

    8.6.3 使用并发性架构维持对用户的快速响应..... 210 8.6.4 通过功能组管理用户界面..... 210 8.6.5 扩展Workbench集成开发环境..... 211 8.7 本章小结...... 212 8.8 参考文献...... 212 第9章 插件...

Global site tag (gtag.js) - Google Analytics