I'm trying to upgrade a working project in 5.3.8 version to 5.4.1 but 2 pages for some reasons are throwing exception at the time of setuprender for a blank named style sheet and I searched all the codebase and could not find any such bad declaration.
Render queue error in SetupRender[workflow/content/Input:slider]: Unable to locate asset 'context:styles/""' (the file does not exist).
Not sure what is the reason, after removing stylesheet from @import it does not throw any error.
Caused by: java.lang.RuntimeException: Unable to locate asset 'context:styles/""' (the file does not exist). at org.apache.tapestry5.internal.services.AssetSourceImpl.getLocalizedAssetFromResource(AssetSourceImpl.java:390) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.AssetSourceImpl.getAssetInLocale(AssetSourceImpl.java:305) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.AssetSourceImpl.getAsset(AssetSourceImpl.java:131) ~[tapestry-core-5.4.1.jar:?] at $AssetSource_cf1a8b3ad15d.getAsset(Unknown Source) ~[?:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter.replaceURLs(CSSURLRewriter.java:177) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter.access$100(CSSURLRewriter.java:46) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter$1.perform(CSSURLRewriter.java:109) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter$1.perform(CSSURLRewriter.java:104) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110) ~[tapestry-ioc-5.4.1.jar:?] at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84) ~[tapestry-ioc-5.4.1.jar:?] at org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266) ~[tapestry-ioc-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter.filter(CSSURLRewriter.java:102) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.CSSURLRewriter.getStreamableResource(CSSURLRewriter.java:94) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:38) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.UTF8ForTextAssets.getStreamableResource(UTF8ForTextAssets.java:40) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:55) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:38) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.JavaScriptStackMinimizeDisabler.getStreamableResource(JavaScriptStackMinimizeDisabler.java:61) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:48) ~[tapestry-core-5.4.1.jar:?] at $StreamableResourceSource_cf1a8b3ad183.getStreamableResource(Unknown Source) ~[?:?] at org.apache.tapestry5.internal.services.AbstractAssetFactory$1.toClientURL(AbstractAssetFactory.java:87) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.services.javascript.StylesheetLink.getURL(StylesheetLink.java:76) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.ajax.JavaScriptSupportImpl.importStylesheet(JavaScriptSupportImpl.java:408) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.services.ajax.JavaScriptSupportImpl.importStylesheet(JavaScriptSupportImpl.java:399) ~[tapestry-core-5.4.1.jar:?] at $JavaScriptSupport_cf1a8b3ad316.importStylesheet(Unknown Source) ~[?:?] at $JavaScriptSupport_cf1a8b3ad1cc.importStylesheet(Unknown Source) ~[?:?] at org.apache.tapestry5.internal.transform.ImportWorker$2.work(ImportWorker.java:60) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.transform.ImportWorker$2.work(ImportWorker.java:57) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.func.ArrayFlow.each(ArrayFlow.java:67) ~[tapestry-func-5.4.1.jar:?] at org.apache.tapestry5.func.ArrayFlow.each(ArrayFlow.java:30) ~[tapestry-func-5.4.1.jar:?] at org.apache.tapestry5.internal.transform.ImportWorker$8.advise(ImportWorker.java:275) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:92) ~[plastic-5.4.1.jar:?] at org.apache.tapestry5.internal.transform.ImportWorker$8.advise(ImportWorker.java:271) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:92) ~[plastic-5.4.1.jar:?] at mycompany.myproject.web.components.Slider.setupRender(Slider.java) ~[Slider.class:?] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:174) ~[tapestry-core-5.4.1.jar:?] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133) ~[tapestry-core-5.4.1.jar:?] ... 92 more
Tapestry 5.4.1 tries to fix URLs in your CSS-es. Somewhere in one of your CSS-es there is a link to e.g. a image that is either broken or Tapestry cannot properly recognise.
Before the stack trace, Tapestry should also log an abbreviated stack of operations its performing. This stack should include line containing Rewriting relative URLs in
and the name of currently processed CSS - check its content and for any lines containing url(
text. Probably somewhere you have line with invalid references like url("")
or url("styles/"")
, and you need to fix or remove them.
If you are still stuck, I suggest following procedure to find what is wrong:
org.apache.tapestry5.internal.services.AssetSourceImpl.getLocalizedAssetFromResource
just before the exception is thrown (line 390);org.apache.tapestry5.internal.services.assets.CSSURLRewriter.replaceURLs
;input
, matcher
, completeURLPatter
, output
- they should provide a clue about what part of your CSS triggered the exception.