0

これは私が得ているエラーです: コンパイルエラー: javac クラスが見つかりません: org.eclipse.jdt.core.JDTCompilerAdapter

Ant ビルド ステップでビルド構成を実行しようとしていますが、このエラーが引き続き発生します。私の知る限り、環境変数を適切に設定しており、TeamCity には .java ファイルのコンパイルに必要なものがすべて付属していると思いますが、javac.exe が見つからないのはなぜですか?

私が提供できる詳細を教えてください。リポジトリはここにあります: https://code.google.com/p/ci-research-teamcity-test-project/source/browse

4

1 に答える 1

-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 タスクの compiler="modern" 属性に注意してください。これにより、私が得た別のエラー、つまり Compilation error: javac - Class not found: 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>
于 2014-09-10T22:55:24.010 に答える