开始工作有大半年了,总是在向网络索取知识,是时候贡献点东西了。这是本吊丝第一次写原创博客,各种板砖砸过来。
言归正传,公司新配了笔记本 :
软件环境: WIN 7 64 bit , 所以装了 最新1.8的jdk , adt-bundle-widows-x86_64-20140321 、用一下午时间升级了sdk 到24.3.4 ant 2.0 编译工程提示:
Class not found: javac1.8
尝试的解决方法:
1.百度谷歌后找到的答案都是: ant版本低于1.7可是哥的ant是2.0的,所以更新ant的路是走不通了;
2.别的同事一般遇到这种问题直接找it把java 换成1.7的就ok 了,可以尝试。但是我想深入研究一下ant的编译过程,所以没有妥协;
最终的解决方案:
找到ant下的uibuild.xml,找到这一行:<matches pattern="1\.[56]" string="${java.specification.version}"/>,在56后面加上8保存后,重新编译即可。
问题分析:
(1)打开sdk目录下的ant文件夹下的uibuildxml文件,根据编译 过程的提示找到了出错的那一步是在compile中的fork="${need.javac.fork}"> 有问题:
<target name="compile" depends="-build-setup, -pre-compile">
<javac encoding="${java.encoding}"
source="${java.source}" target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
verbose="${verbose}"
fork="${need.javac.fork}">
<src path="${source.absolute.dir}" />
<compilerarg line="${java.compilerargs}" />
</javac>
(2)于是乎开始找定义${source.absolute.dir}的地方:
<condition else="false" property="need.javac.fork">
<and>
<matches pattern="1\.[56]" string="${java.specification.version}"/>
<not>
<os family="unix"/>
</not>
</and>
</condition>
(3)恍然大悟 原来是指定了1.5和1.6版本的,于是我就在56后面加了 个8, 保存后 重新编译,哈哈成功了。