As not many developers have access to an ECW environment it can be
difficult for folks to answer such a question.

Are you in position to start up geoserver in a development environment and
see what is happening at:

at java.desktop/javax.imageio.ImageReader.setInput(ImageReader.java:307)
>

Looking in GitHub:
https://github.com/JetBrains/jdk8u_jdk/blob/master/src/share/classes/javax/imageio/ImageReader.java#L307

It appears to be a generic message when none of the available formats was
able to understand the format.

The next step as a developer would be to look at the code where the ECW
format checks the file and confirm:

a) that it is available (recognizes the library you have installed)
b) checks the file correctly and agrees it can read it

I am glad you were able to use the module info to confirm your installation
is available. It would be nice if that page listed the formats that GDAL
supports.
--
Jody Garnett


On Apr 2, 2024 at 2:34:46 PM, Giuseppe Falcone <falcone.giuse...@gmail.com>
wrote:

> Hi to all,
> I have a geoserver installation with these params:
>
>    - Ubuntu 22.04.4 LTS
>    - openjdk version 11.0.22
>    - Tomcat 9.0.86
>    - geoserver 2.24.2 deployed as war
>
>
> I need to publish ECW image and so I have installed/compiled related
> plugin:
>
> ERDAS ECW SDK 5.3.0
> SQL Lite 3.37.2
> PROJ 8.2.1
> GDAL 3.4.1
>
> Now , in WEB-INF/lib, I have these libs:
> [image: image.png]
> and from geoserver web interface I see:
> [image: image.png]
> As raster data source I see:
> [image: image.png]
> When I try to create an ECW storage,  I have this error:
>
> 14:26:35 INFO   [geoserver.web] - Getting list of coverages for saved
> store file:///var/lib/DATA/GEOSERVER_DATA/XXXXXXX.ecw
> java.lang.RuntimeException: Could not list layers for this store, an error
> occurred retrieving them: Incorrect input type!
>         at
> org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:181)
>         at
> org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:60)
>         at
> org.geoserver.web.wicket.GeoServerDataProvider.getFilteredItems(GeoServerDataProvider.java:190)
>         at
> org.geoserver.web.data.layer.NewLayerPageProvider.getFilteredItems(NewLayerPageProvider.java:197)
>         at
> org.geoserver.web.wicket.GeoServerDataProvider.size(GeoServerDataProvider.java:208)
>         at
> org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.updateMatched(GeoServerTablePanel.java:662)
>         at
> org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.<init>(GeoServerTablePanel.java:657)
>         at
> org.geoserver.web.wicket.GeoServerTablePanel.<init>(GeoServerTablePanel.java:236)
>         at
> org.geoserver.web.wicket.GeoServerTablePanel.<init>(GeoServerTablePanel.java:105)
>         at
> org.geoserver.web.data.layer.NewLayerPage$1.<init>(NewLayerPage.java:111)
>         at
> org.geoserver.web.data.layer.NewLayerPage.<init>(NewLayerPage.java:110)
>         at
> org.geoserver.web.data.store.CoverageStoreNewPage.onSuccessfulSave(CoverageStoreNewPage.java:86)
>         at
> org.geoserver.web.data.store.CoverageStoreNewPage.onSave(CoverageStoreNewPage.java:71)
>         at
> org.geoserver.web.data.store.AbstractCoverageStorePage$1.onSubmit(AbstractCoverageStorePage.java:147)
>         at
> org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:111)
>         at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:218)
>         at
> org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1312)
>         at org.apache.wicket.markup.html.form.Form.process(Form.java:976)
>         at
> org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
>         at
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:174)
>         at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
>         at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
>         at jdk.internal.reflect.GeneratedMethodAccessor189.invoke(Unknown
> Source)
>         at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>         at
> org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
>         at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
>         at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
>         at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
>         at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
>         at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>         at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
>         at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
>         at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
>         at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
>         at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
>         at
> org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:159)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
>         at
> org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:166)
>         at
> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)
>         at
> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51)
>         at
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
>         at
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
>         at
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
>         at
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
>         at
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:73)
>         at
> org.geoserver.flow.controller.IpBlacklistFilter.doFilter(IpBlacklistFilter.java:89)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
>         at
> org.geoserver.flow.ControlFlowCallback.doFilter(ControlFlowCallback.java:264)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
>         at
> org.geoserver.ows.HTTPHeadersCollector.doFilter(HTTPHeadersCollector.java:48)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
>         at
> org.geoserver.filters.HTTPMethodFilter.doFilter(HTTPMethodFilter.java:36)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
>         at
> org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:194)
>         at
> org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
>         at
> org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:43)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:39)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:71)
>         at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
>         at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:75)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:71)
>         at
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
>         at
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:75)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:71)
>         at
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:223)
>         at
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:75)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
>         at
> org.geoserver.security.filter.GeoServerUserNamePasswordAuthenticationFilter.doFilter(GeoServerUserNamePasswordAuthenticationFilter.java:122)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:71)
>         at
> org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:106)
>         at
> org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:97)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:75)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:71)
>         at
> org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilterInternal(GeoServerSecurityContextPersistenceFilter.java:72)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
> at
> org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:75)
>         at
> org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)
>         at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346)
>         at
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221)
>         at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186)
>         at
> org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:142)
>         at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354)
>         at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:100)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:48)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:49)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:42)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
>         at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
>         at
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
>         at
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794)
> at
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
>         at java.base/java.lang.Thread.run(Thread.java:829)
> Caused by: java.lang.IllegalArgumentException: Incorrect input type!
>         at
> java.desktop/javax.imageio.ImageReader.setInput(ImageReader.java:307)
>         at
> it.geosolutions.imageio.gdalframework.GDALImageReader.setInput(GDALImageReader.java:719)
>         at
> it.geosolutions.imageio.plugins.ecw.ECWImageReader.setInput(ECWImageReader.java:60)
>         at
> java.desktop/javax.imageio.ImageReader.setInput(ImageReader.java:380)
>         at
> org.geotools.coverageio.BaseGridCoverage2DReader.<init>(BaseGridCoverage2DReader.java:163)
>         at
> org.geotools.coverageio.gdal.BaseGDALGridCoverage2DReader.<init>(BaseGDALGridCoverage2DReader.java:76)
>         at
> org.geotools.coverageio.gdal.ecw.ECWReader.<init>(ECWReader.java:53)
>         at
> org.geotools.coverageio.gdal.ecw.ECWFormat.getReader(ECWFormat.java:64)
>         at
> org.geotools.coverageio.gdal.ecw.ECWFormat.getReader(ECWFormat.java:35)
>         at
> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1669)
>         at
> org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1609)
>         at
> org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:57)
>         at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>         at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>         at
> org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:155)
>         at com.sun.proxy.$Proxy187.getGridCoverageReader(Unknown Source)
>         at
> org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:98)
>         ... 147 more
>
> If I execute a gdalinfo on this ecw I doesn't see any error:
>
> user@lx-geos:/var/lib/GEOSERVER_DATA$ gdalinfo XXXXXXXX.ecw
> Driver: ECW/ERDAS Compressed Wavelets (SDK 5.3)
> Files: XXXXXXXX.ecw
> Size is 288214, 501825
> Coordinate System is:
> ENGCRS["LOCAL - (unsupported)",
>     EDATUM[""],
>     CS[Cartesian,2],
>         AXIS["(E)",east,
>             ORDER[1],
>             LENGTHUNIT["metre",1,
>                 ID["EPSG",9001]]],
>         AXIS["(N)",north,
>             ORDER[2],
>             LENGTHUNIT["metre",1,
>                 ID["EPSG",9001]]]]
> Data axis to CRS axis mapping: 1,2
> Origin = (550900.153410499915481,4445699.999095499515533)
> Pixel Size = (0.499975000000000,-0.499975000000000)
> Metadata:
>   COLORSPACE=RGB
>   COMPRESSION_RATE_TARGET=10
>   VERSION=2
> Corner Coordinates:
> Upper Left  (  550900.153, 4445699.999)
> Lower Left  (  550900.153, 4194800.045)
> Upper Right (  694999.948, 4445699.999)
> Lower Right (  694999.948, 4194800.045)
> Center      (  622950.051, 4320250.022)
> Band 1 Block=256x256 Type=Byte, ColorInterp=Red
>   Description = Red
>   Overviews: 144107x250912, 72053x125456, 36026x62728, 18013x31364,
> 9006x15682, 4503x7841, 2251x3920, 1125x1960, 562x980, 281x490, 140x245
> Band 2 Block=256x256 Type=Byte, ColorInterp=Green
>   Description = Green
>   Overviews: 144107x250912, 72053x125456, 36026x62728, 18013x31364,
> 9006x15682, 4503x7841, 2251x3920, 1125x1960, 562x980, 281x490, 140x245
> Band 3 Block=256x256 Type=Byte, ColorInterp=Blue
>   Description = Blue
>   Overviews: 144107x250912, 72053x125456, 36026x62728, 18013x31364,
> 9006x15682, 4503x7841, 2251x3920, 1125x1960, 562x980, 281x490, 140x245
> user@lx-geos:/var/lib/GEOSERVER_DATA$
>
> Could someone help me?
> Thanks in advance
>
> Giuseppe
>
>
> _______________________________________________
> Geoserver-users mailing list
>
> Please make sure you read the following two resources before posting to
> this list:
> - Earning your support instead of buying it, but Ian Turton:
> http://www.ianturton.com/talks/foss4g.html#/
> - The GeoServer user list posting guidelines:
> http://geoserver.org/comm/userlist-guidelines.html
>
> If you want to request a feature or an improvement, also see this:
> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
>
>
> Geoserver-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to