`

在jdk1.6上编译碰到问题

ant 
阅读更多
最近在编译我们的中间件产品的时候,碰到了一些问题
原来编译环境:jdk1.5,OS:linux为64位,windows为32位。现在转移到jdk1.6上
在jdk1.6上编译,OS:linux为64位,windows为32位。在编译某个模块的时候,会提示bad class file: xxx.class,
unable to access file: corrupted zip file
提示损坏的xxx.class,位于jar包AA.jar中。用jar命令jar -tvf AA.jar | grep xxx,可以得到xxx.class,说明xxx.class在AA.jar中,没有损坏。
编写一个测试类,该类import了xxx.class,没有其他语句。单独编译该类,用-cp AA.jar指定用到的jar,编译通过。
上面两步测试,说明所谓损坏的xxx.class其实完好的存在于AA.jar中,那为什么编译模块总是失败呢?
分析编译的log,发现在发生错误之前,ant执行了一个jar命令,该命令update了AA.jar,接着是javac命令,编译时候用到了AA.jar中的类,看来是在执行javac的时候jar命令还没有完成对AA.jar的更新操作,导致了问题。跟踪这个分析,我在javac命令加入了-verbose参数,这样相当于降低了javac的执行速度,果然编译通过了。看来jdk1.6的编译速度太快,暴露了这个问题。这个问题揭示了一个并发的问题,就是在ant中顺序执行jar命令和javac命令,javac可能在jar命令没有完全结束前执行,要从根本解决这个问题,需要重构代码,不在刚update一个jar后马上引用它。
分享到:
评论

相关推荐

    jdk1.5 jdk1.6 反编译 工具

    综上所述,这个压缩包提供的是一款适用于JDK1.2至JDK1.6的Java反编译工具,包括一个汉化版的图形界面程序(yingjad.exe)和原始的反编译引擎(jad.exe),还提供了一份ReadMe文档来指导用户如何使用这些工具。...

    okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.zip

    1.okhttp3.8源码使用jdk1.6重新编译,已集成了okio,在javaweb项目中使用,未在安卓项目中使用 2.okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.jar

    jdk1.6集成jjwt的问题

    标题中的“jdk1.6集成jjwt的问题”指的是在Java Development Kit (JDK) 版本1.6的环境下,尝试整合JSON Web Token (JWT) 库jjwt时遇到的挑战。JWT是一种开放标准(RFC 7519),用于在各方之间安全地传输信息作为 ...

    okhttp3.8源码使用jdk1.6重新编译

    okhttp3.8源码使用jdk1.6重新编译,已集成了okio,在javaweb项目中使用,未在安卓项目中使用

    苹果电脑安装jdk1.6 mac for jdk1.6 jdk6 安装版

    mac for jdk1.6 jdk6 安装版 里面有两个jdk1.6的安装包,都可以用 如果电脑上安装有1.7,1.8等高版本jdk就不要再下安装包了,安装包安装会报错 命令是这个:brew install java6或 brew install homebrew/cask-...

    解决JDK1.6下的Base64报错问题

    在资源文件中的`解决JDK1.6下的Base64.jar`可能是包含了一个兼容JDK 1.6的Base64实现的第三方库,你可以直接将这个jar包添加到你的项目类路径中,这样就可以使用其中提供的Base64类而无需修改代码。添加方法通常包括...

    jdk1.6压缩包,下载即用

    - **下载**:从Oracle官网或其他可信源下载JDK 1.6的安装文件,如"jdk1.6.exe"。 - **安装**:双击执行安装文件,按照向导步骤进行安装,选择合适的安装路径。 - **环境变量设置**:安装完成后,需要在系统环境变量...

    JDK1.6版本下载

    **JDK 1.6版本详解** Java Development Kit(JDK)是Oracle公司提供的用于开发和运行Java应用程序的工具集合。...对于那些需要在旧系统上运行或兼容JDK 1.6的应用来说,了解并掌握这个版本的特性至关重要。

    jdk1.6免安装版

    总的来说,JDK1.6免安装版是一种方便且独立的开发工具选择,特别适用于需要在多台计算机上工作或保持系统纯净的开发者。尽管它有一些局限性,但通过合理的管理和配置,可以满足大多数开发需求。如果你的项目需要兼容...

    aspose-words-15.8.0-jdk1.6

    aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-...

    jdk1.6 解压版-windows

    在Windows环境下使用JDK1.6,你需要设置环境变量,主要包括`JAVA_HOME`指向JDK的安装目录,以及`PATH`添加%JAVA_HOME%\bin,确保系统可以找到JDK的可执行文件。 JDK1.6相对于更早的版本,引入了一些新特性,如: -...

    JDK1.6百度云下载

    JDK1.6是Java发展史上的一个重要版本,它在JDK1.5的基础上进行了大量的改进和优化,提供了更多的特性和功能。 ### 二、JDK1.6的主要特性 1. **性能优化**:JDK1.6对垃圾回收机制进行了改进,提升了程序运行时的...

    jdk1.6 32位免安装纯绿色版

    Java Development Kit(JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序所需的所有工具。本资源是JDK 1.6的32位免安装纯绿色版本,非常适合那些希望快速启动Java开发而无需进行复杂...

    jdk1.6解决base64

    因此,在JDK 1.6下使用这些类时可能会遇到兼容性问题,比如编译错误或者运行时异常等。 #### 解决方案 为了解决这个问题,可以考虑引入Apache Commons Codec库。Apache Commons Codec库提供了一系列编码器和解码器...

    okhttp3.8.0-jdk1.6.zip

    OkHttp3.8.0-jdk1.6.zip是一个专门为Java Web项目设计的网络通信库,它针对JDK1.6进行了优化和重新编译,确保在较低版本的Java环境中也能稳定运行。OkHttp,由Square公司开发,是一款高性能的HTTP客户端库,以其高效...

    jdk1.6jar包

    这个特定的更新主要集中在错误修复和安全补丁上,确保开发者在使用JDK 1.6时,能避免已知的安全风险,同时提高系统的稳定性。这些更新可能包括对Java插件、Java运行时环境、Javadoc工具、Java编译器等各个组件的改进...

    jdk1.6解压版(免安装版)

    在给定的"jdk1.6解压版(免安装版)"中,用户无需经历传统意义上的安装过程,只需将压缩包解压到指定位置,然后配置系统环境变量,就可以开始使用这个版本的JDK进行Java程序的开发和运行。 1. **JDK1.6**:这是Java的...

    jdk 1.6 64位

    **安装JDK 1.6 64位在Windows系统上的步骤:** 1. **下载**:首先,你需要从官方或可靠的第三方源下载适用于Windows 64位系统的JDK 1.6安装包,文件名为“jdk6-x64”。 2. **运行安装程序**:双击下载的安装包,...

    IBMJDK1.6linux.zip

    由于64位系统可以处理更大的内存地址空间,因此对于需要大量内存的应用来说,IBM JDK 1.6在64位系统上的表现通常优于32位系统。 安装IBM JDK 1.6时,通常需要遵循以下步骤: 1. 下载`IBMJDK16linux.zip`压缩包到...

    如何解决JDK1.6下的Base64

    Guava库在JDK 1.6上也是兼容的。添加Guava库后,可以这样使用Base64编码: ```java import com.google.common.io.BaseEncoding; public class Base64Example { public static void main(String[] args) { String...

Global site tag (gtag.js) - Google Analytics