Monday, January 11, 2010

Pain, suffering, grief, and lamentation

Since Android doesn't provide an implementation of javax.naming.*, but Derby expects it to be present, I thought maybe I could code up my own stub implementation and include it in my app.

So I tried an experiment in my Android developer kit, and provoked this; is this the greatest error message ever written?

Attempt to include a core class (java.* or javax.*) in something other than a core library. It is likely that you have attempted to include in an application the core library (or a part thereof) from a desktop virtual machine. This will most assuredly not work. At a minimum, it jeopardizes the compatibility of your app with future versions of the platform. It is also often of questionable legality.

If you really intend to build a core library -- which is only appropriate as part of creating a full virtual machine distribution, as opposed to compiling an application -- then use the "--core-library" option to suppress this error message.

If you go ahead and use "--core-library" but are in fact building an application, then be forewarned that your application will still fail to build or run, at some point. Please be prepared for angry customers who find, for example, that your application ceases to function once they upgrade their operating system. You will be to blame for this problem.

If you are legitimately using some code that happens to be in a core package, then the easiest safe alternative you have is to repackage that code. That is, move the classes in question into your own package namespace. This means that they will never be in conflict with core system classes. If you find that you cannot do this, then that is an indication that the path you are on will ultimately lead to pain, suffering, grief, and lamentation.

I've definitely encountered pain and suffering; is that grief on the horizon?

1 comment:

  1. As a newbie, trying to run a simple "make toast" demo level activity, and tripping into this error message, I have to say it's the worst error message since "Keyboard not connected, press F1 to continue". While the error message's author is on his soapbox, I'm left with nearly nothing to go on. My stupid syntax error gives me 4 paragraphs of nonsense.