Classpath元素不是jar

时间:2015-08-10 17:04:00

标签: java ant

我正在尝试编写一个调用Java类

的ant构建
<target name="validate" depends="forge-jar">        
    <taskdef name="spec" classname="SpecBuild" classpathref="java.classpath" />
            <spec a="${forge}" mail="${mail}" dd="${dd}" wdd="${wdd}"/>
    </target>
<target name="forge-jar" >
            <path id="project.class.path">
            <pathelement location="classes/" />
            <pathelement path="classes/ant/tasks/SpecBuild.class" />
        </path>
        <path id="java.classpath">
            <path refid="project.class.path" />
        </path>
        <javac includeantruntime="false" srcdir="src" destdir="classes" classpathref="java.classpath">
            <filename name="**/SpecBuild.java" />
        </javac>
    </target>

在SpecBuild.java类中,如果我使用slf4j logger,我收到此警告: -

CLASSPATH element /Users/classes/ant/tasks/SpecBuild.class is not a JAR.
  [taskdef] CLASSPATH element /Users/classes/ant/tasks/SpecBuild.class is not a JAR.

任何人都可以帮我解决这个问题

1 个答案:

答案 0 :(得分:2)

您可以指定&#39;类&#39;类路径中的目录如下所示。删除&#39; SpecBuild.class&#39;来自pathElement位置的文件。您可以使用&#39; includes&#39;属性并提及其中的文件名或只包括&#39;类&#39;目录如下(如果有的话,排除JUni测试用例包。)

  <classpath>
      <pathelement path="${classpath}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="${build.dir}">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>`enter code here`
      </dirset>
</classpath>
祝你好运。