tags:

views:

382

answers:

2

Hi,

I am doing some thing obvious wrong. I have a simple applet which needs to upload files to server. I have written an ant script to build the jar file. However, the manifest.mf has class-path split into multiple lines.

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Class-Path: lib/commons-codec-1.3.jar            lib/commons-httpclien
 t-3.1.jar            lib/commons-logging-1.0.4.jar            lib/plu
 gin.jar
Created-By: 14.3-b01-101 (Apple Inc.)

My build.xml is :

<project name="ScreenShot" default="dist" basedir=".">
 <description>
        simple example build file
    </description>
 <!-- set global properties for this build -->
 <property name="src" location="src" />
 <property name="build" location="build" />
 <property name="dist" location="dist" />

 <target name="init">
  <!-- Create the time stamp -->
  <tstamp />
  <!-- Create the build directory structure used by compile -->
  <mkdir dir="${build}" />
 </target>

 <target name="compile" depends="init" description="compile the source ">


  <!-- Compile the java code from ${src} into ${build} -->
  <javac srcdir="${src}" destdir="${build}">
   <classpath>
    <pathelement path="${classpath}" />
    <pathelement path="lib/commons-codec-1.3.jar:lib/commons-httpclient-3.1.jar:lib/plugin.jar" />
   </classpath>

  </javac>
 </target>

 <target name="dist" depends="compile" description="generate the distribution">
  <!-- Create the distribution directory -->
  <mkdir dir="${dist}" />


  <copy todir="${build}/lib">
   <fileset dir="lib/" />
  </copy>

  <path id="libs.project">

   <!-- lib.home contains all jar files, in several subdirectories -->
   <fileset dir="lib">
    <include name="**/*.jar" />
   </fileset>
  </path>

  <manifestclasspath property="jar.classpath" maxParentLevels="1" jarfile="build/ScreenShot.jar">

   <classpath refid="libs.project" />
  </manifestclasspath>

  <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
  <jar jarfile="/Users/firemonk/red5/webapps/whiteboard/ScreenShot.jar" basedir="${build}">
   <manifest>
    <attribute name="Class-Path" value="${jar.classpath}" />
   </manifest>
  </jar>
 </target>



 <target name="clean" description="clean up">
  <!-- Delete the ${build} and ${dist} directory trees -->
  <delete dir="${build}" />
  <delete dir="${dist}" />
 </target>
</project>
A: 

Check the value of ${jar.classpath}. It seems its value itself is in multiple lines.

Suraj Chandran
A: 

Does it not work? It's a bit odd that there are big spaces between each classpath entry but it looks valid.

The manifest specification states that lines must be no longer than 72 bytes and that longer lines should be split and continued on the next line with a leading space.

Dan Dyer
I have created a test project and with a simple class(MyTest) and 4 jar files in the lib folder. MyTest is instantiating a class from each jar file to access all the jar files. I am trying to have my build file create the jar. finally I using this command to test :java -cp ScreenShot.jar org.test.DelmeI always get class not found error
firemonkey
firemonkey
Can you please make the simple jar file work. I can't see what am I missing. I have spent 2 days on this.
firemonkey