Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-21

Misleading error message when a component sub-class invokes non-default constructor of parent component class

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Abandoned
    • 5.0.15
    • None
    • None
    • None
    • Linux, Sun JDK 1.6

    Description

      Some of my pages inherit from a common abstract base class but even if I move this to <root package>.base, I receive the following application exception:

      Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for <root package>.pages.MyPage
      at org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:241)
      at org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findInstantiator(ComponentInstantiatorSourceImpl.java:223)
      at $ComponentInstantiatorSource_118ac384906.findInstantiator($ComponentInstantiatorSource_118ac384906.java)
      at org.apache.tapestry.internal.services.PageElementFactoryImpl.newRootComponentElement(PageElementFactoryImpl.java:257)
      at $PageElementFactory_118ac384934.newRootComponentElement($PageElementFactory_118ac384934.java)
      at org.apache.tapestry.internal.services.PageLoaderProcessor.loadRootComponent(PageLoaderProcessor.java:413)
      at org.apache.tapestry.internal.services.PageLoaderProcessor.loadPage(PageLoaderProcessor.java:391)
      at org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(PageLoaderImpl.java:60)
      at $PageLoader_118ac384932.loadPage($PageLoader_118ac384932.java)
      at org.apache.tapestry.internal.services.PagePoolCache.checkout(PagePoolCache.java:188)
      at org.apache.tapestry.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:107)
      at $PagePool_118ac384931.checkout($PagePool_118ac384931.java)
      at org.apache.tapestry.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:43)
      at $RequestPageCache_118ac384930.get($RequestPageCache_118ac384930.java)
      at $RequestPageCache_118ac384903.get($RequestPageCache_118ac384903.java)
      at org.apache.tapestry.internal.services.LinkFactoryImpl.createPageLink(LinkFactoryImpl.java:239)
      at $LinkFactory_118ac384935.createPageLink($LinkFactory_118ac384935.java)
      at org.apache.tapestry.internal.structure.PageImpl.createPageLink(PageImpl.java:161)
      at org.apache.tapestry.internal.structure.InternalComponentResourcesImpl.createPageLink(InternalComponentResourcesImpl.java:128)
      at org.apache.tapestry.corelib.components.PageLink.beginRender(PageLink.java:73)
      at org.apache.tapestry.corelib.components.PageLink.beginRender(PageLink.java)
      at org.apache.tapestry.internal.structure.ComponentPageElementImpl$11$1.run(ComponentPageElementImpl.java:338)
      at org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:874)
      ... 62 more
      Caused by: java.lang.ClassNotFoundException: caught an exception while obtaining a class file for <root package>.pages.MyPage
      at javassist.Loader.findClass(Loader.java:359)
      at org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:73)
      at javassist.Loader.loadClass(Loader.java:311)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
      at org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findClass(ComponentInstantiatorSourceImpl.java:237)
      ... 84 more
      Caused by: java.lang.RuntimeException: Base class <root package>.base.AbstractPage (super class of <root package>.pages.MyPage) is not in a controlled package and is therefore not valid. You should try moving the class to package <root package>.base.
      at org.apache.tapestry.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:126)
      at $ComponentClassTransformer_118ac384913.transformComponentClass($ComponentClassTransformer_118ac384913.java)
      at org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:162)
      at javassist.Loader.findClass(Loader.java:340)
      ... 88 more

      Attachments

        Issue Links

          Activity

            People

              hlship Howard Lewis Ship
              jenspfau Jens Pfau
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: