您的位置:首页 > 编程语言 > Java开发

"Class not found: javac1.8"问题总结

2015-09-16 20:41 134 查看
开始工作有大半年了,总是在向网络索取知识,是时候贡献点东西了。这是本吊丝第一次写原创博客,各种板砖砸过来。

言归正传,公司新配了笔记本 :

软件环境: 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,找到这一行:[b]<matches pattern="1\.[56]" string="${java.specification.version}"/>,在56后面加上8保存后,重新编译即可。[/b]

问题分析:

(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, 保存后 重新编译,哈哈成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: