Java applet,将jar文件添加到清单文件中

时间:2010-02-23 04:08:04

标签: java ant applet

我做了一些明显错误的事情。我有一个简单的小程序,需要将文件上传到服务器。我编写了一个ant脚本来构建jar文件。但是,manifest.mf将类路径拆分为多行。

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.)

我的build.xml是:

<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>

2 个答案:

答案 0 :(得分:0)

检查${jar.classpath}的值。看来它的价值本身就是多行。

答案 1 :(得分:0)

不起作用吗?有点奇怪的是,每个类路径条目之间有很大的空格,但看起来有效。

manifest specification表示行必须不超过72个字节,并且应该拆分更长的行,并在带有前导空格的下一行继续。