How to make Jar file using ANT on Java classes that belong to apackage?

T

tomzam

I'm not sure this is the right newsgroup
for this, since I will be asking about ant.

I am however trying to make a jar file -
so I think it fits the groups purpose.

I'm trying to make a jar file with ant, which I can do: but none of
the contained files have
the package path suffux on them.

So for example the following ANT code makes a ReversiGui.jar

<?xml version="1.0" ?>
<project default="main" basedir=".">

<target name="main" depends="compile, compress">
<echo>
building the jar file
</echo>
</target>

<target name="compile">
<javac srcdir="./com/tz4"/>
</target>

<target name="compress">
<jar jarfile="ReversiGui.jar" basedir="./com/tz4"
includes="*.class" >
<manifest>
<attribute name="Main-Class" value="com.tz4.ReversiGui"/>
</manifest>
</jar>
</target>


but the classses have straight names
such as ReversiGui.class

where I need them to be qualified with their package names.

So in this case I want:
com/tz4/ReversiGui.class to be in the Jar

The whole purpose of this is so I can execute the jar with the
command:
java -jar ReversuiGui.jar
But it does not work since the Main-Class expects the package suffix.
(Actually all the classses use the same package: com.tz4)

So if anybody knows how to use ANT to make the jar with package
friendly class names, please clue me in.
I've beeen working on this for an hour and can't see the forest for
the trees.

Thanks in advance
Tom Z
 
A

Arne Vajhøj

I'm not sure this is the right newsgroup
for this, since I will be asking about ant.

I am however trying to make a jar file -
so I think it fits the groups purpose.

I'm trying to make a jar file with ant, which I can do: but none of
the contained files have
the package path suffux on them.

So for example the following ANT code makes a ReversiGui.jar

<?xml version="1.0" ?>
<project default="main" basedir=".">

<target name="main" depends="compile, compress">
<echo>
building the jar file
</echo>
</target>

<target name="compile">
<javac srcdir="./com/tz4"/>
</target>

<target name="compress">
<jar jarfile="ReversiGui.jar" basedir="./com/tz4"
includes="*.class" >
<manifest>
<attribute name="Main-Class" value="com.tz4.ReversiGui"/>
</manifest>
</jar>
</target>


but the classses have straight names
such as ReversiGui.class

where I need them to be qualified with their package names.

So in this case I want:
com/tz4/ReversiGui.class to be in the Jar

The whole purpose of this is so I can execute the jar with the
command:
java -jar ReversuiGui.jar
But it does not work since the Main-Class expects the package suffix.
(Actually all the classses use the same package: com.tz4)

So if anybody knows how to use ANT to make the jar with package
friendly class names, please clue me in.
I've beeen working on this for an hour and can't see the forest for
the trees.

<jar jarfile="ReversiGui.jar" basedir="./com/tz4" includes="*.class" >

skips com/tz4 in the stored path - you probably want:

<jar jarfile="ReversiGui.jar" basedir="." includes="**/*.class" >

Arne
 
T

tomzam

<jar jarfile="ReversiGui.jar" basedir="./com/tz4" includes="*.class" >

skips com/tz4 in the stored path - you probably want:

<jar jarfile="ReversiGui.jar" basedir="." includes="**/*.class" >

Arne


Thanks Arne, that solved the problem.

I had skimmed past the part of the book that described the "**/*"
syntax
becasue I was looking for information on jar files.

Just go's to show you that devil is in the details,
And overlooking something can be dangerous. (In this case - a whole
bunch of lost time)
Anyway,
Thanks again
(And I hope your post can help anyone else who has this trouble in the
future)
- Tom Z
 
A

Arne Vajhøj

I had skimmed past the part of the book that described the "**/*"
syntax
becasue I was looking for information on jar files.

Just go's to show you that devil is in the details,
And overlooking something can be dangerous. (In this case - a whole
bunch of lost time)

Not that it is functional important, but I would recommend
having .java files in a src dir and .class files in a
build dir to keep things nicely separated.

Arne
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top