|
Cool. That's a very subtle issue with using reflection that I hadn't thought about. Dunno anything about Xalan, but since Java is pretty fundamentally about dynamically loading resources only when needed, I'd expect XALAN may have similar problems in other circumstances too. Ultimately it may be a good fix for them. "The stuff we call "software" is not like anything that human society is used to thinking about. Software is something like a machine, and something like mathematics, and something like language, and something like thought, and art, and information... but software is not in fact any of those other things." Bruce Sterling - The Hacker Crackdown Fred A. Kulack - IBM eServer iSeries - Enterprise Application Solutions ERP, Java DB2 access, Jdbc, JTA, etc... IBM in Rochester, MN (Phone: 507.253.5982 T/L 553-5982) mailto:kulack@xxxxxxxxxx Personal: mailto:kulack@xxxxxxxxxxxxxx AIM Home:FKulack AIM Work:FKulackWrk MSN Work: fakulack@xxxxxxxxxxx "Gary L Peskin" <garyp@xxxxxxxxxxxx To: "'Java Programming on and around the iSeries / AS400'" > <java400-l@xxxxxxxxxxxx> Sent by: cc: java400-l-bounces@x Subject: RE: JDBC version vs JDK idrange.com 08/15/2003 03:05 PM Please respond to Java Programming on and around the iSeries / AS400 Okay. I found the problem. Many thanks, David and Fred and John, for helping with this. The problem is that Connection.createStatement() is not directly called by the program. Instead, the name of the method "createStatement()" is actually passed as a String to a routine in a program (called Xalan) that attempts to determine which method of Connection to actually invoke. In order to do this, it uses java reflection. Specifically, it calls Class.getMethods() on the Connection object (which is DB2Connection) in order to ennumerate the methods so that it can figure out which one the caller actually wants to call. It is during the getMethods() call, while ennumerating the methods, that Xalan ends up throwing a NoClassDefFoundError. This is because it comes across the setSavepoint method and tries to create the Method object for it. However, it can't find the Savepoint class so it throws up. The OS/400 folks have decided to ship one db2_classes.jar supporting JDBC 3.0. It shouldn't cause problems running under an older JDK unless you actually try to "use" one of the JDBC 3.0-only methods. It is necessary for the Xalan folks, then, to understand what "use" means. If this isn't fixed in the current version of Xalan (we're using an older version), I'll open a bugzilla entry over there to exclude from consideration any methods that throw a NoClassDefFoundError during the getMethods() call. Gary > -----Original Message----- > From: java400-l-bounces@xxxxxxxxxxxx > [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of David Morris > Sent: Friday, August 15, 2003 10:03 AM > To: java400-l@xxxxxxxxxxxx > Subject: RE: JDBC version vs JDK > > > No, just DB2SavePoint. I will forward the whole thing to you directly. > > David Morris > > >>> garyp@xxxxxxxxxxxx 8/15/2003 10:02:59 AM >>> > Just one more question before I ask my friend to open a PMR. > In your -verbose logging, do you see a load for java.sql.Savepoint? > > Thanks, > Gary > > _______________________________________________ > This is the Java Programming on and around the iSeries / > AS400 (JAVA400-L) mailing list To post a message email: > JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change > list options, > visit: http://lists.midrange.com/mailman/listinfo/java400-l > or email: JAVA400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives > at http://archive.midrange.com/java400-l. > _______________________________________________ This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/java400-l or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/java400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.