There is a bug in versions of the JRE prior to 1.6 with reading indexed-color PNG files using ImageIO.read. Added special trapping of the exception for a more informative error message.
Review by: scottb (desk check)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1339 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
index ea01e55..6869341 100644
--- a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
@@ -174,8 +174,28 @@
throw new UnableToCompleteException();
}
+ BufferedImage image;
// Load the image
- BufferedImage image = ImageIO.read(imageUrl);
+ try {
+ image = ImageIO.read(imageUrl);
+ } catch (IllegalArgumentException iex) {
+ if (imageName.toLowerCase().endsWith("png") &&
+ iex.getMessage() != null &&
+ iex.getStackTrace()[0].getClassName().equals("javax.imageio.ImageTypeSpecifier$Indexed")) {
+ logger.log(TreeLogger.ERROR,
+ "Unable to read image. The image may not be in valid PNG format. "
+ + "This problem may also be due to a bug in versions of the "
+ + "JRE prior to 1.6. See "
+ + "http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5098176 "
+ + "for more information. If this bug is the cause of the "
+ + "error, try resaving the image using a different image "
+ + "program, or upgrade to a newer JRE.", null);
+ throw new UnableToCompleteException();
+ } else {
+ throw iex;
+ }
+ }
+
if (image == null) {
logger.log(TreeLogger.ERROR, "Unrecognized image file format", null);
throw new UnableToCompleteException();