You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2003/12/05 23:41:46 UTC

DO NOT REPLY [Bug 25255] New: - gets manifest wrong so classpath doesnt work for "java -jar my.jar"

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25255>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25255

<jar> gets manifest wrong so classpath doesnt work for "java -jar my.jar"

           Summary: <jar> gets manifest wrong so classpath doesnt work for
                    "java -jar my.jar"
           Product: Ant
           Version: 1.5.4
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: caron@unidata.ucar.edu


this is broken in 1.5.1, 1.5.4 and 1.6beta3

if i use ant's <jar> task to create a manifest (internal or external), then 
java 1.4.2 (probably others) doesnt allow java -jar my.jar

i get this error

+ java -Xmx512m -jar netcdfAll.jar
Exception in thread "main" java.lang.NoClassDefFoundError: 
ucar/util/prefs/XMLStore
at ucar.nc2.ui.ToolsUI.main(ToolsUI.java:761)

but with no other changes this works:

+ java -Xmx512m -classpath 
netcdfAll.jar;prefsAll.jar;units.jar;HTTPClient.jar;jdom.jar 
ucar.nc2.ui.ToolsUI

i can use the <exec> command with jdk's jar to get around this, so this works: 

<exec dir="${build.classes.dir}" executable="jar" output="dir.txt">
  <arg line="cfm ${dist.dir}/${jarAll.library} ${root.dir}/manifest.txt *"/>
</exec>

but this doesnt:
		
<jar jarfile="${dist.dir}/${jarAll.library}" index="true" 
manifest="${root.dir}/manifest.txt">
  <fileset dir="${build.classes.dir}" />
  <fileset dir="${build.dir}" includes="README "/>
</jar>

the only thing i can see different is where the Created-By: line gets placed 
in the manifest, which seems to be rearranged by <jar> (ive extracted the 
manifests from the jars):

$ cat manifest.bad
Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Main-Class: ucar.nc2.ui.ToolsUI
Class-Path: prefsAll.jar HTTPClient.jar units.jar jdom.jar

$ cat manifest.good
Manifest-Version: 1.0
Class-Path: prefsAll.jar HTTPClient.jar units.jar jdom.jar
Created-By: Apache Ant 1.5.1
Main-Class: ucar.nc2.ui.ToolsUI

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org