[Geoserver-users] JDKImageReaderWriterSPI Error Deploying on Tomcat

Hi,

I'm trying to deploy the GeoServer 1.7.3 (the March 17th update) WAR on Tomcat 5.5.27 but I get a JDKImageReaderWriterSPI error, which I've included below. From searching the list archives, I noticed a related entry that notes JAI may be missing from the JDK being used by tomcat. I've ruled this one out, I think, as both jai_imageio.jar and clibwrapper_jiio.jar are present in the /jdk1.5.0/jre/lib/ext/ folder.

Is there anything else obvious that I should look at?

Thanks,

Greg

20 Mar 15:12:36 INFO [geoserver.confg] - Loading service 'wms'
java.lang.NoSuchMethodError: com.sun.media.imageioimpl.common.ImageUtil.getJDKImageReaderWriterSPI(Ljavax/imageio/spi/ServiceRegistry;Ljava/lang/String;Z)Ljava/util/List;
  at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageWriterSpi.onRegistration(TIFFImageWriterSpi.java:142)
  at javax.imageio.spi.SubRegistry.registerServiceProvider(ServiceRegistry.java:698)
  at javax.imageio.spi.ServiceRegistry.registerServiceProvider(ServiceRegistry.java:285)
  at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:189)
  at javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:120)
  at javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:141)
  at javax.imageio.ImageIO.<clinit>(ImageIO.java:46)
  at org.geoserver.jai.JAIInitializer.initJAI(JAIInitializer.java:83)
  at org.geoserver.jai.JAIInitializer.initialize(JAIInitializer.java:30)
  at org.geoserver.config.GeoServerLoader.initialize(GeoServerLoader.java:141)
  at org.geoserver.config.GeoServerLoader.postProcessBeforeInitialization(GeoServerLoader.java:81)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
  at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:495)
  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:162)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
  at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:495)
  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:162)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
  at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831)
  at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  at org.apache.catalina.core.StandardService.start(StandardService.java:448)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:585)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
20 Mar 15:12:37 INFO [util.ApplicationContextProvider] - No context parameter, system or Java environment variables found for GEOSERVER_WMS_URL

--
--------------------------------------------------------------------
Gregory Yetman
Senior Staff Associate
Center for International Earth Science Information Network (CIESIN)
Columbia University
URL: http://www.ciesin.columbia.edu/
e-mail: gyetman (at) ciesin.columbia.edu
tel: (845) 365-8982
--------------------------------------------------------------------

Gregory Yetman ha scritto:

Hi,

I'm trying to deploy the GeoServer 1.7.3 (the March 17th update) WAR on Tomcat 5.5.27 but I get a JDKImageReaderWriterSPI error, which I've included below. From searching the list archives, I noticed a related entry that notes JAI may be missing from the JDK being used by tomcat. I've ruled this one out, I think, as both jai_imageio.jar and clibwrapper_jiio.jar are present in the /jdk1.5.0/jre/lib/ext/ folder.

Is there anything else obvious that I should look at?

Hmmm... com.sun.media.imageioimpl.common.ImageUtil is a class that
does not look to be available at all in JDK 1.5, but it's part
of JDK 1.6, and it seems
it.geosolutions.imageioimpl.plugins.tiff.TIFFImageWriterSpi.onRegistration
is just assuming the class is around?

Simone (cc'ed), do we have a JDK 1.6 dependency in the imageio-ext
build?
If the user just removes the imageio-ext-tiff jar will anything
else break?

Cheers
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

Hi,
that class is part of JAI-ImageIO 1.1.
Which version of jai-imageio 1.1 do you have on your JDK?

Daniele

On Mon, Mar 23, 2009 at 10:25 AM, Andrea Aime <aaime@anonymised.com> wrote:

Gregory Yetman ha scritto:

Hi,

I’m trying to deploy the GeoServer 1.7.3 (the March 17th update) WAR on
Tomcat 5.5.27 but I get a JDKImageReaderWriterSPI error, which I’ve
included below. From searching the list archives, I noticed a related
entry that notes JAI may be missing from the JDK being used by tomcat.
I’ve ruled this one out, I think, as both jai_imageio.jar and
clibwrapper_jiio.jar are present in the /jdk1.5.0/jre/lib/ext/ folder.

Is there anything else obvious that I should look at?

Hmmm… com.sun.media.imageioimpl.common.ImageUtil is a class that
does not look to be available at all in JDK 1.5, but it’s part
of JDK 1.6, and it seems

it.geosolutions.imageioimpl.plugins.tiff.TIFFImageWriterSpi.onRegistration

is just assuming the class is around?

Simone (cc’ed), do we have a JDK 1.6 dependency in the imageio-ext
build?
If the user just removes the imageio-ext-tiff jar will anything
else break?

Cheers
Andrea


Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.


Apps built with the Adobe(R) Flex(R) framework and Flex Builder™ are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse™based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com


Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Eng. Daniele Romagnoli
Software Engineer

GeoSolutions S.A.S.
Via Carignoni 51
55041 Camaiore (LU)
Italy

phone: +39 0584983027
fax: +39 0584983027
mob: +39 328 0559267

http://www.geo-solutions.it


Hi,

Daniele Romagnoli provided the fix, Java 1.5 had an older version (1.0) of jai_imageio.jar when 1.1 is required. I switched to Java 1.6 to solve the problem. Although upgrading the jai on it's own should of worked, I upgraded Java after reading about the performance increase with Geoserver.

Thanks,

Greg

Gregory Yetman wrote:

Hi,

I'm trying to deploy the GeoServer 1.7.3 (the March 17th update) WAR on Tomcat 5.5.27 but I get a JDKImageReaderWriterSPI error, which I've included below. From searching the list archives, I noticed a related entry that notes JAI may be missing from the JDK being used by tomcat. I've ruled this one out, I think, as both jai_imageio.jar and clibwrapper_jiio.jar are present in the /jdk1.5.0/jre/lib/ext/ folder.

Is there anything else obvious that I should look at?

Thanks,

Greg

20 Mar 15:12:36 INFO [geoserver.confg] - Loading service 'wms'
java.lang.NoSuchMethodError: com.sun.media.imageioimpl.common.ImageUtil.getJDKImageReaderWriterSPI(Ljavax/imageio/spi/ServiceRegistry;Ljava/lang/String;Z)Ljava/util/List;
  at it.geosolutions.imageioimpl.plugins.tiff.TIFFImageWriterSpi.onRegistration(TIFFImageWriterSpi.java:142)
  at javax.imageio.spi.SubRegistry.registerServiceProvider(ServiceRegistry.java:698)
  at javax.imageio.spi.ServiceRegistry.registerServiceProvider(ServiceRegistry.java:285)
  at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:189)
  at javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:120)
  at javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:141)
  at javax.imageio.ImageIO.<clinit>(ImageIO.java:46)
  at org.geoserver.jai.JAIInitializer.initJAI(JAIInitializer.java:83)
  at org.geoserver.jai.JAIInitializer.initialize(JAIInitializer.java:30)
  at org.geoserver.config.GeoServerLoader.initialize(GeoServerLoader.java:141)
  at org.geoserver.config.GeoServerLoader.postProcessBeforeInitialization(GeoServerLoader.java:81)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1330)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
  at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:495)
  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:162)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
  at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
  at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:495)
  at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:162)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
  at java.security.AccessController.doPrivileged(Native Method)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
  at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:831)
  at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:720)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  at org.apache.catalina.core.StandardService.start(StandardService.java:448)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:585)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
20 Mar 15:12:37 INFO [util.ApplicationContextProvider] - No context parameter, system or Java environment variables found for GEOSERVER_WMS_URL

--
--------------------------------------------------------------------
Gregory Yetman
Senior Staff Associate
Center for International Earth Science Information Network (CIESIN)
Columbia University
URL: http://www.ciesin.columbia.edu/
e-mail: gyetman (at) ciesin.columbia.edu
tel: (845) 365-8982
--------------------------------------------------------------------