2014-10-13 3 views
1

Привет, Я работаю над проектом, в котором мне говорят, чтобы создать dist ant target, который создает JAR-файл и jrun-цель, которая зависит от dist target ant, должна запускать созданный файл jar dist. В то время как муравей JRun я получаю ошибку folowing: jrun [java]: no main manifest attribute in *\build\jar\navus.jar«нет основного атрибута манифеста»

<?xml version="1.0" encoding="UTF-8"?> 

<project name="POS" default="build" basedir="."> 

<!-- Project properties--> 

<property name="src.dir" value="${basedir}/src"/> 
<property name="build.dir" value="${basedir}/build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="lib.dir" value="${basedir}/lib"/> 
<property name="jar.dir" value="${build.dir}/jar"/> 
<property name="main.class" value="ee.ut.math.tvt.navus.Intro"/> 

<!-- Different classpaths form compiling and running--> 

<path id="compile.classpath"> 
     <fileset dir="${lib.dir}"> 
      <include name="**/*.jar"/> 
     </fileset> 
</path> 

    <path id="run.classpath"> 
      <pathelement location="${classes.dir}"/> 
      <path refid="compile.classpath"/> 
     </path> 


<!-- Clean existing build--> 
<target name="clean"> 
    <delete dir="${build.dir}" /> 


</target> 



<!-- Builds Java code--> 

<target name="build" depends="clean"> 
    <mkdir dir="${build.dir}"/> 
    <mkdir dir="${classes.dir}"/> 
    <copy file="${src.dir}/log4j.properties" todir="${classes.dir}" overwrite="true" /> 

    <javac 
     srcdir="${src.dir}" 
     destdir="${classes.dir}"> 
     <classpath refid="compile.classpath"/> 
    </javac> 
</target> 

<!-- Creates jar file--> 

<target name="dist" depends="build"> 
    <mkdir dir="${jar.dir}"/> 
    <propertyfile file="version.properties"> 
     <entry key="build.revision.number" type="int" default="0" operation="+"/> 
    </propertyfile> 

    <jar jarfile="${build.dir}/jar/navus.jar" 
     basedir="${build.dir}/classes"> 
     <manifest> 
      <attribute name="mainClass" value="${main.class}"/>   
     </manifest> 
     <fileset dir="${basedir}" includes="${src.dir}"/> 

     </jar> 
</target> 

<!-- Executes application via class Intro--> 


    <target name="run" depends="build" 
    description="runs introUI via Intro" > 
     <java classname="${main.class}" 

     classpathref="run.classpath" 
     fork="yes"> 

     </java> 
    </target> 


<!-- Runs application using JAR file--> 

<target name="jrun" depends="dist" 
    description=" Run JAR file"> 
    <java jar="${jar.dir}/navus.jar" 
    fork="yes"/> 

</target> 


</project> 
+0

Файл manifest.mf содержит класс с основным методом, который вы используете для запуска приложения. Так что это необходимо в файле сборки - в maven это app.Application . У муравья будет что-то подобное – kayakpim

+0

У меня есть идея, но не знаю, как реализовать это в муравье – Ollikas

ответ

1

Глядя на Google возвращает https://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html. Может быть, попробовать что-то вроде этого -

<target name="jar"> 
    <mkdir dir="build/jar"/> 
    <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes"> 
     <manifest> 
      <attribute name="Main-Class" value="oata.HelloWorld"/> 
     </manifest> 
    </jar> 
</target> 
0

Вам нужно создать файл манифеста (MANIFEST.MF), который идет в папку META-INF внутри вашей баночке. Он напоминает это:

Manifest-Version: 1.0 
Application-Name: MyApp 
Sealed: true 
Main-Class: com.mysite.myappname.myMainClass 
Codebase: www.mysite.com