Return-Path: Delivered-To: apmail-jakarta-ant-user-archive@jakarta.apache.org Received: (qmail 84693 invoked by uid 500); 23 May 2001 15:33:24 -0000 Mailing-List: contact ant-user-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Reply-To: ant-user@jakarta.apache.org Delivered-To: mailing list ant-user@jakarta.apache.org Received: (qmail 82484 invoked from network); 23 May 2001 15:31:14 -0000 Message-Id: <4.3.1.2.20010523172832.02dfdef0@lucas.cv.msl.es> X-Sender: jchees@lucas.cv.msl.es X-Mailer: QUALCOMM Windows Eudora Version 4.3.1 Date: Wed, 23 May 2001 17:34:58 +0200 To: ant-user@jakarta.apache.org From: Jim Cheesman Subject: RE: Jar file loading In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====================_30931376==_" X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N --=====================_30931376==_ Content-Type: text/plain; charset="us-ascii"; format=flowed At 04:29 PM 23/05/01, you wrote: > > Still, if anyone needs a couple of utilities to trace down > > where a class is being loaded from, I'm happy to share. (One's even > > defined as an ant task! ;) > >I've come into this discussion late, but I thought I'd chip in one small >contribution, if people don't want to download whole full utilities - a >tiny little program knocked up for a usenet post: > >public class JWhich >{ I *knew* there was an easier way to do this! Still, I'm including my files as they have slightly different functionality (and they're not exactly big!) JarFileReader/ZipFileReader * java jim.utilities.[Jar|Zip]FileReader * Outputs to the result file all the file contents of the zip/jar files in and below the starting directory ClassFinder * java jim.utilities.ClassFinder * eg java jim.utilities.ClassFinder org.xml.sax.Parser * Finds all of org.xml.sax.Parser within jar/zip files on the classpath * Finds all possible matches to Parser in (sub)directories on the classpath Can be used as a task: Example (within compile target): If anyone wants to make the inputClassName parameter above a little more flexible, that'd be great! Hope they're of use to someone! Jim --=====================_30931376==_ Content-Type: application/octet-stream; name="jim.jar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jim.jar" 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 ciclehnzYK8ufeCJ4lSe2EXSvqa0VBF2cV2yCQ1xX5mYzZInzJwOaCZpRvcqSTemz7skwhE6lJ8G IgmsIOvi2i4ondHvSkxDCUWdQA9xehpRPRvuBuX6fZjqJ3T6Dfm1UfrtotvW9mTcQazZYPh6Ty8w f7Dc91rthe+C9mMDiDul3RimglVIKLCdP3H5uyDbpa4grb6kco6yS0t0nCAHl+4NRx3x19Aoan0u Svqw0BTPLKXFnm6mWpdIGpd2eOS3Ugk66bX0xCdyTnXalGUKX7+2MPqJTKoZrj7PkxA+ZcO3xy/N wplAJ9kZvEt7pRB35PPd2cDpm8W9uyoE6xCNpVrx/mwztYH8hGhOt6O85SinAzK3HGX4d0NB27w3 JNPfv1BLBwiMoLpJUAQAAPAKAABQSwECFAAUAAgACACEi7cqAAAAAAIAAAAAAAAACQAEAAAAAAAA AAAAAAAAAAAATUVUQS1JTkYv/soAAFBLAQIUABQACAAIAISLtyrfo3sjSAAAAEgAAAAUAAAAAAAA AAAAAAAAAD0AAABNRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUABQACAAIAHmLtyqNSEWHzQkAACck AAAeAAAAAAAAAAAAAAAAAMcAAABqaW0vdXRpbGl0aWVzL0NsYXNzRmluZGVyLmphdmFQSwECFAAU AAgACABzi7cqyBd66aUFAABqEwAAJwAAAAAAAAAAAAAAAADgCgAAamltL3V0aWxpdGllcy9Db21w cmVzc2VkRmlsZVJlYWRlci5qYXZhUEsBAhQAFAAIAAgAdou3KiskB45bBAAABAsAACAAAAAAAAAA AAAAAAAA2hAAAGppbS91dGlsaXRpZXMvSmFyRmlsZVJlYWRlci5qYXZhUEsBAhQAFAAIAAgAcou3 KoyguklQBAAA8AoAACAAAAAAAAAAAAAAAAAAgxUAAGppbS91dGlsaXRpZXMvWmlwRmlsZVJlYWRl ci5qYXZhUEsFBgAAAAAGAAYAugEAACEaAAAAAA== --=====================_30931376==_ Content-Type: text/plain; charset="us-ascii"; format=flowed -- * Jim Cheesman * Trabajo: jchees@msl.es - (34)(91) 724 9200 x 2360 On one hand, I'm indecisive, but on the other, I'm not. --=====================_30931376==_--