ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Tanner <caspersg...@gmail.com>
Subject Re: Access jar files in a library directory in the jar file
Date Tue, 18 Jun 2013 07:27:52 GMT
In that case, is there an ant task that will enable me to explode the jar file and add the
classes that way.  I could simply explode the jars in my development hierarchy in Eclipse,
but I would rather leave them untouched there and only explode them when I build the main
jar file.  I looked in the ant user's guide, and I couldn't find such a task, but is there
a way to execute a short shell script from within the build.xml file?

~ Rob





On Jun 17, 2013, at 4:08 PM, Joe Attardi <joe@attardi.net> wrote:

> Hi Rob,
> 
> I don't think you can have JAR files inside the JAR file like that.
> 
> 
> On Mon, Jun 17, 2013 at 6:38 PM, Rob Tanner <caspersgrin@gmail.com> wrote:
> 
>> Hi,
>> 
>> I'm trying to build a runnable jar file that includes several libraries
>> that are also jar files.  My problem is that Java does not seem to be able
>> to find the libraries.  I get this message when I try to run the jar file:
>> 
>> java -jar LibraryAlmaInterface.jar
>> Exception in thread "main" java.lang.NoClassDefFoundError:
>> org/linfield/PreferencesManager/XMLPrefs
>>        at org.linfield.Library.PatronDataTransfer.<clinit>(Unknown Source)
>> Caused by: java.lang.ClassNotFoundException:
>> org.linfield.PreferencesManager.XMLPrefs
>>        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>>        ... 1 more
>> 
>> You can see from the table of contents that the c;ass file is there:
>> 
>> jar tf LibraryAlmaInterface.jar
>> META-INF/
>> META-INF/MANIFEST.MF
>> lib/
>> org/
>> org/linfield/
>> org/linfield/Library/
>> org/linfield/Library/Workers/
>> lib/jsch-0.1.49.jar
>> lib/linfield.jar
>> lib/log4j-1.2.15.jar
>> lib/xerces.jar
>> org/linfield/Library/CalculateBarcode.class
>> org/linfield/Library/PatronDataTransfer.class
>> org/linfield/Library/Workers/MyUserInfo.class
>> org/linfield/Library/Workers/PatronLoadsXML.class
>> org/linfield/Library/Workers/SecureFTPHandler.class
>> 
>> And the linfield.jar contains the class that the loader can't find:
>> 
>> META-INF/
>> META-INF/MANIFEST.MF
>> org/
>> org/linfield/
>> org/linfield/PreferencesManager/
>> org/linfield/PreferencesManager/PreferencesParser.class
>> org/linfield/PreferencesManager/XMLPrefs.class
>> org/linfield/PreferencesManager/XMLPrefs.java
>> org/linfield/PreferencesManager/PreferencesParser.java
>> 
>> And the manifest in linfield.jar is:
>> 
>> cat META-INF/MANIFEST.MF
>> Manifest-Version: 1.0
>> Created-By: 1.4.0 (Sun Microsystems Inc.)
>> 
>> And most importantly, here is the main MANIFEST.MF file (for
>> LibraryAlmaInterface.jar):
>> 
>> cat META-INF/MANIFEST.MF
>> Manifest-Version: 1.0
>> Ant-Version: Apache Ant 1.8.3
>> Created-By: 1.6.0_45-b06-451-11M4406 (Apple Inc.)
>> Built-By: rtanner
>> Main-Class: org.linfield.Library.PatronDataTransfer
>> Class-Path: lib/jsch-0.1.49.jar lib/linfield.jar lib/log4j-1.2.15.jar
>> lib/xerces.jar
>> 
>> 
>> I'm assuming that the problem is with the manifest, but I have no idea
>> what it is.  Any help would be greatly appreciated.
>> 
>> Thanks,
>> 
>> 
>> Rob Tanner
>> Linfield College
>> 
>> 
>> 
>> 
>> 
> 
> 
> -- 
> *Joe Attardi*
> joe@attardi.net


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message