2015-08-18 2 views
0

Файл манифеста не создается через ANT. Как бы то ни было, создается oata.HelloWorld, и я предполагаю, что это файл манифеста. Однако это не в папке build/class или в папке build/jar. Я также управляю ANT через eclipseФайл манифеста не генерируется через ANT

Buildfile: C:\Users\dt208672\Perforce\depot\ebill\Automation\Selenium_eBill\MarketPower\build.xml 
init: 
prepare: 
compile: 
[javac] C:\Users\dt208672\Perforce\depot\ebill\Automation\Selenium_eBill\MarketPower\build.xml:18: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
jar: 
run: 
[java] Error: Could not find or load main class oata.HelloWorld 
[java] Java Result: 1 

Это мой xml-код.

<?xml version="1.0" ?> 

<project name="SeleniumProjectDataDriven" basedir="." default="run"> 
<target name="init"> 
    <property name="src.dir" value="src" /> 
    <property name="build.dir" value="build" /> 
    <property name="classes.dir" value="${build.dir}/class" /> 
    <property name="lib.dir" value="../JAR/MarketPower Jars" /> 
    <property name="Common.dir" value="../Common" /> 
    <property name="CommonBin.dir" value="${Common.dir}/bin" /> 
</target> 

<target name="prepare" depends="init"> 
    <mkdir dir="${classes.dir}" /> 
</target> 

<target name="compile" description="Compiles the code" depends="prepare"> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}"> 
     <classpath> 
      <fileset dir="${lib.dir}"> 
       <include name="**/*.jar" /> 
      </fileset> 
     </classpath> 
    </javac> 
</target> 

<target name="jar" description="Packages the code into jar" depends="compile"> 
    <mkdir dir="build/jar"/> 
     <jar destfile="build/jar/HelloWorld.jar" basedir="build/class"> 
      <manifest> 
       <attribute name="Main-Class" value="oata.HelloWorld"/> 
      </manifest> 
     </jar> 
</target> 

<target name="run" description="Run the jar file" depends="jar" > 
    <java jar="build/jar/HelloWorld.jar" fork="true"/> 
</target> 

ответ

2

Ваша проблема является точной противоположностью того, что вы говорите. Файл Jar имеет только манифест, как указано сообщением об ошибке, которое знает имя основного класса oata.HelloWorld.

Вам необходимо добавить скомпилированные файлы .class в файл Jar.

<jar destfile="build/jar/HelloWorld.jar"> 
    <manifest> 
     <attribute name="Main-Class" value="oata.HelloWorld"/> 
    </manifest> 
    <fileset dir="${classes.dir}" includes="**/*.class"/> 
</jar> 

Обновлено

Следующие отлично работает для меня.

ЦСИ \ oata \ HelloWorld.java:

package oata; 
public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("Hello World"); 
    } 
} 

build.xml:

<project name="SeleniumProjectDataDriven" basedir="." default="run"> 
    <target name="init"> 
    <property name="src.dir" value="src" /> 
    <property name="build.dir" value="build" /> 
    <property name="classes.dir" value="${build.dir}/class" /> 
    <property name="jar.dir" value="${build.dir}/jar" /> 
    </target> 

    <target name="compile" description="Compiles the code" depends="init"> 
    <mkdir dir="${classes.dir}" /> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" /> 
    </target> 

    <target name="jar" description="Packages the code into jar" depends="compile"> 
    <mkdir dir="${jar.dir}" /> 
    <jar destfile="${jar.dir}/HelloWorld.jar" basedir="build/class"> 
     <manifest> 
     <attribute name="Main-Class" value="oata.HelloWorld" /> 
     </manifest> 
    </jar> 
    </target> 

    <target name="run" description="Run the jar file" depends="jar" > 
    <java jar="${jar.dir}/HelloWorld.jar" fork="true" /> 
    </target> 
</project> 

Выход:

compile: 
Compiling 1 source file to C:\My\Workspaces\EMDRS\_test\build\class 

jar: 
Building jar: C:\My\Workspaces\EMDRS\_test\build\jar\HelloWorld.jar 

run: 
Hello World 

BUILD SUCCESSFUL 
Total time: 1 second 
+0

Я получаю ту же ошибку , Любое другое предложение? – LinhSaysHi

+0

Если вы откроете файл .jar, например. переименовать в .zip и открыть с помощью WinZip, содержит ли он файл с именем «oata/HelloWorld.class»? – Andreas

+0

есть есть. Не уверен, хороший или плохой – LinhSaysHi

Смежные вопросы