TeamCity无法找到javac,尝试使用ant构建步骤运行构建配置

时间:2014-09-06 17:04:57

标签: java eclipse ant teamcity buildconfiguration

这是我得到的错误: 编译错误:javac 未找到类:org.eclipse.jdt.core.JDTCompilerAdapter

我正在尝试使用ant构建步骤运行构建配置并继续收到此错误。 据我所知,我已经正确设置了环境变量,我认为TeamCity带有编译.java文件所需的一切,为什么找不到javac.exe?

告诉我可以提供的详细信息。可以在此处找到存储库:https://code.google.com/p/ci-research-teamcity-test-project/source/browse

1 个答案:

答案 0 :(得分:-1)

错误发生在build.xml脚本中 我正在使用Eclipse提供的生成的build.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- WARNING: Eclipse auto-generated file.
              Any modifications will be overwritten.
              To include a user specific buildfile here, simply create one in the same
              directory with the processing instruction <?eclipse.ant.import?>
              as the first entry and export the buildfile again. --><project basedir="." default="build" name="ci-research-teamcity-test-project">
    <property environment="env"/>
    <property name="ECLIPSE_HOME" value="../../../../eclipse/"/>
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.8"/>
    <property name="source" value="1.8"/>
    <path id="ci-research-teamcity-test-project.classpath">
        <pathelement location="bin"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    <target name="clean">
        <delete dir="bin"/>
    </target>
    <target depends="clean" name="cleanall"/>
    <target depends="build-subprojects,build-project" name="build"/>
    <target name="build-subprojects"/>
    <target depends="init" name="build-project">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}">
            <src path="src"/>
            <classpath refid="ci-research-teamcity-test-project.classpath"/>
        </javac>
    </target>
    <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
    <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
        <copy todir="${ant.library.dir}">
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </copy>
        <unzip dest="${ant.library.dir}">
            <patternset includes="jdtCompilerAdapter.jar"/>
            <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
        </unzip>
    </target>
    <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
        <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
        <antcall target="build"/>
    </target>
    <target name="Demo01">
        <java classname="pack1.Demo01" failonerror="true" fork="yes">
            <classpath refid="ci-research-teamcity-test-project.classpath"/>
        </java>
    </target>
    <target name="Demo02">
        <java classname="pack1.Demo02" failonerror="true" fork="yes">
            <classpath refid="ci-research-teamcity-test-project.classpath"/>
        </java>
    </target>
</project>

这是我的build_custom.xml,它可以工作,它被修剪和简化:
(注意javac任务中的编译器=&#34;现代&#34;属性,这修复了我得到的另一个错误,即编译错误:javac - 找不到类:javac1.8)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!--    Author:         Petrus K.
            Description:    A custom ant build script based on an auto-generated script by Eclipse 4.4.0
            More info:      http://ant.apache.org/manual/using.html
    -->

    <!-- project attributes -->
    <project basedir="." default="build" name="ci-research-teamcity-test-project">
        <description>
            simple ant build script for demonstrational purposes
        </description>

    <!-- properties -->
    <property name="src" location="src"/>
    <property name="bin" location="bin"/>

    <!-- paths -->
    <path id="classpath">
        <pathelement location="bin"/>
    </path>

    <!-- targets -->
    <!-- TARGET init: initializes file and folder structures before compilation -->
    <target name="init" description="initializes file and folder structures before compilation">
        <mkdir dir="bin"/>
            <copy includeemptydirs="false" todir="bin">
                <fileset dir="src">
                    <exclude name="**/*.java"/>
                </fileset>
            </copy>
        <echo message="init completed"></echo>
    </target>

    <!-- TARGET build: compiles the source -->
    <target name="build" depends="init" description="compiles the source">
        <javac srcdir="${src}" destdir="${bin}" includeantruntime="false" compiler="modern"/>
        <echo message="build completed"></echo>
    </target>

    <!-- TARGET clean: cleans the compiled files -->
    <target name="clean" description="cleans the compiled files">
        <delete dir="bin"/>
        <echo message="clean completed"></echo>
    </target>

    <!-- TARGET run: runs the demo project -->
    <target name="run" depends="build" description="runs the demo project">
        <java classname="pack1.Demo01" failonerror="true" fork="yes">
            <classpath refid="classpath"/>
        </java>
        <echo message="run completed"></echo>
    </target>

    </project>