Uploaded image for project: 'Tiles'
  1. Tiles
  2. TILES-267

IllegalAccessException with Jetty

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Incomplete
    • 2.0.5
    • None
    • tiles-core
    • None
    • Eclipse, Jetty

    • Important

    Description

      I'm getting exception when running standalone under Jetty:

      org.apache.tiles.TilesException: Unable to retrieve init parameters. Is this context a ServletContext, PortletContext, or similar object?
      at org.apache.tiles.factory.TilesContainerFactory.getInitParameterMap(TilesContainerFactory.java:352)
      at org.apache.tiles.factory.TilesContainerFactory.getFactory(TilesContainerFactory.java:143)
      at org.apache.tiles.factory.TilesContainerFactory.getFactory(TilesContainerFactory.java:122)
      at org.apache.tiles.web.startup.TilesListener.createContainer(TilesListener.java:88)
      at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:57)
      at org.mortbay.jetty.servlet.WebApplicationContext.doStart(WebApplicationContext.java:495)
      at org.mortbay.util.Container.start(Container.java:72)
      at org.mortbay.http.HttpServer.doStart(HttpServer.java:708)
      at org.mortbay.util.Container.start(Container.java:72)
      at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:116)
      at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:39)
      Caused by: java.lang.IllegalAccessException: Class org.apache.tiles.factory.TilesContainerFactory can not access a member of class org.mortbay.jetty.servlet.ServletHandler$Context with modifiers "public"
      at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
      at java.lang.reflect.Method.invoke(Method.java:578)
      at org.apache.tiles.factory.TilesContainerFactory.getInitParameterMap(TilesContainerFactory.java:343)
      ... 10 more

      I did some digging.
      Exception is happening because class org.mortbay.jetty.servlet.ServletHandler$Context is package local.
      Method returned via context.getClass().getMethod(...) can't be used outside of package.
      If ServletContext.class.getMethod(...) would be used instead, then it will work.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              vasiliy_gagin Vasiliy Gagin
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: