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



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

我正在尝试运行一个带有ant构建步骤的构建配置,但一直收到这个错误。据我所知,我已经正确地设置了环境变量,并且我认为TeamCity提供了编译.java文件所需的一切,为什么它找不到javac.exe?

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

错误出现在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任务中的compiler="modern"属性,这修复了我得到的另一个错误,即编译错误: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>

相关内容

  • 没有找到相关文章