× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.






>I am trying to instantiate a class which extends JFrame, which extends
>JRootPane.  I get:

>java.lang.NoClassDefFoundError: com.sun.java.swing.JRootPane

>I am importing com.sun.java.swing.*, as evidenced by the fact that I don't
error
>out on JFrame.
>As such, I can't figure out why it seems to be having trouble finding
JRootPane,
>which is in the same package.

>Any ideas?  Thanks.
---------

I answered this on the NEWS/400 site, but just in case:

You can extend a class without importing the package.  IBM Visual Age for Java
does this all the time.  You can do it by fully qualifying the superclass:

     public class MyFrame extends com.sun.java.swing.JFrame {

"Importing" a package is not something done implicitly.  You must explicitly
import the package with an import statement such as:

     import com.sun.java.swing.*;

That will import ALL the classes in Swing (version 1.0.x).  Be careful, though,
it will NOT import all the classes in, say, com.sun.java.swing.JTable.  You have
to again explicitly import each sub-package.

Okay, on to your NoClassDefFoundError.  First, a slight correction: JFrame does
not extend JRootPane, it CONTAINS JRootPane.  That is, one of JFrame's fields is
defined as type JRootPane.  By fully qualifying the superclass and not doing the
explicit import, the compiler fails because it doesn't know what a JRootPane is.
You can avoid all that with the following code:

     import com.sun.java.swing.*;

     public class MyFrame extends JFrame {

Note that you no longer have to fully qualify the superclass.

One final note: I notice that you're using the old Swing1.0.3 naming conventions
(com.sun.java.swing.*).  I highly recommend moving to Swing1.1.1, which uses the
javax.swing.* naming convention.  This is the same convention as used by Java2
(a/k/a JDK1.2 and JDK1.3).  By going to this convention now, you'll save
yourself the effort of converting all your package names when you go to Java2.
Swing1.1.1 is in full release and will run with JDK1.1.  You can download it
from:

http://www.javasoft.com/products/jfc/download.html

Good luck!

Joe Pluta
Moderator
http://www.zappie.net
Where the AS/400 speaks Java with an RPG accent
Home of PBD1.2P, the FREE Java/400 Client/Server Toolkit


+---
| This is the JAVA/400 Mailing List!
| To submit a new message, send your mail to JAVA400-L@midrange.com.
| To subscribe to this list send email to JAVA400-L-SUB@midrange.com.
| To unsubscribe from this list send email to JAVA400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner: joe@zappie.net
+---


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.