On 20 Nov 2012, at 19:44, Jim <open...@gmail.com> wrote:

> No -- the /war/WEB-INF/classes directory is .gitignored, and empty until we 
> deploy, at which point we copy in the compiled .java files, etc.
>
> I suppose my core question is: if 
> "$CATALINA_HOME/work/Catalina/localhost/_/org/apache/jsp/tag/web/about_tag.class"
>  exists, what situations could cause Tomcat to give the following error:
>
> An error occurred at line: 1 in the jsp file: 
> /WEB-INF/jsp/about/about_impact.jsp
> org.apache.jsp.tag.web.about_tag cannot be resolved to a type
> 1: <%@ include file="../common/constants.jsp" %><templates:about>
>
> If I delete 
> "$CATALINA_HOME/work/Catalina/localhost/_/org/apache/jsp/tag/web/about_tag.class",
>  and re-visit "/WEB-INF/jsp/about/about_impact.jsp", 
> "$CATALINA_HOME/work/Catalina/localhost/_/org/apache/jsp/tag/web/about_tag.class"
>  gets re-created, but I still get the above error.
>
> So, Tomcat appears to be compiling the JSP fine, but that compiled JSP does 
> not appear to be making it into the classloader?
>
> -- Jim
>
>
> On 11/20/12 2:34 PM, Pid * wrote:
>> On 20 Nov 2012, at 13:42, Jim <open...@gmail.com> wrote:
>>
>>> Thanks for the question -- I worded that part awkwardly.
>>>
>>> Our project has a root-level "/src" directory with the web app's Java 
>>> files, and a root-level "/war" directory with the exploded non-Java files 
>>> (static assets, JSPs, etc.).  When developing, Eclipse compiles the "/src" 
>>> directory into the "/war/WEB-INF/classes" directory, and then copies any 
>>> changed files from "/war" into its embedded Tomcat instance.
>>>
>>> When we switch Git branches, that could change the .jsp/.tag files inside 
>>> the "/war" directory, but depending on the branch, those changed files 
>>> might have an earlier modified-timestamp than the .jsp/.tag files that have 
>>> already been copied over to the embedded Tomcat's exploded webapp 
>>> directory.  So my thought was that those files would not, then, be 
>>> recompiled, and so at runtime, Tomcat would be using the older versions of 
>>> those files that are cached in Tomcat's "/work" directory.  I think that 
>>> theory is countered, however, by my colleague's claim that she clears out 
>>> "/work" before deploying a new branch, and also my own experience wherein I 
>>> watched Tomcat re-compile the .tag file into the "/work" directory, yet 
>>> still claim the tag's class "cannot be resolved."
>>>
>>> But to clarify: no part of Tomcat itself, including "/work", is kept under 
>>> version control.
>>>
>>> -- Jim
>>>
>>>
>>> On 11/20/12 2:18 AM, Pid * wrote:
>>>> On 19 Nov 2012, at 23:58, Jim <open...@gmail.com> wrote:
>>>>
>>>>> Hello!
>>>>>
>>>>> My team has been having an issue wherein our application occasionally 
>>>>> fails to start up because Tomcat claims it can't find find a 
>>>>> dynamically-created classfile.  This doesn't happen all the time, and 
>>>>> restarting Tomcat (albeit more than once, sometimes) resolves it.
>>>>>
>>>>> For example, I just started my Tomcat 6.0.26 instance (via Eclipse WTP, 
>>>>> on OS 10.7.5), tried to load a page, and got:
>>>>>
>>>>> ** snip **
>>>>>
>>>>> An error occurred at line: 1 in the jsp file: 
>>>>> /WEB-INF/jsp/about/about_impact.jsp
>>>>> org.apache.jsp.tag.web.about_tag cannot be resolved to a type
>>>>> 1: <%@ include file="../common/constants.jsp" %><templates:about>
>>>>>
>>>>> ** snip/ **
>>>>>
>>>>> The constants.jsp referenced above contains:
>>>>> <%@ taglib prefix="templates" tagdir="/WEB-INF/tags" %>
>>>>>
>>>>> ... and /WEB-INF/tags contains the "about.tag" file.
>>>>>
>>>>> The "$CATALINA_HOME/work/Catalina/localhost/_/org/apache/jsp/tag/web" 
>>>>> directory exists, and it contains both about_tag.class and 
>>>>> about_tag.java, with timestamps corresponding to when I loaded the page.
>>>>>
>>>>> I then deleted those files, and refreshed the page in my browser. 
>>>>> about_tag.class and about_tag.java get recreated in that directory, but I 
>>>>> still get the above error claiming about_tag can't be resolved.
>>>>>
>>>>> I then restarted Tomcat, refreshed the page in my browser, and all is 
>>>>> well.
>>>>>
>>>>>
>>>>> I've also seen this happen regularly for my Windows-using colleagues, as 
>>>>> well as in a non-Eclipse Linux-based 6.0.29 instance, and (hearsay) a 
>>>>> colleague reported it happening in his Tomcat 7. Thinking it was a 
>>>>> runtime race condition, we also tried telling Tomcat to load the JSP on 
>>>>> startup via the web.xml, and while we did see the .java and .class files 
>>>>> being created on startup, we still ran into the issue.  We haven't yet 
>>>>> tried pre-compiling our JSPs/TAGs before starting Tomcat -- but that 
>>>>> shouldn't be necessary, right?
>>>>>
>>>>> I'd love some advice/insight in how I might investigate this further, or 
>>>>> if there's a "gotcha" I might be running into.  It "feels" like a race 
>>>>> condition in the classloader, but I don't want to submit a bug report 
>>>>> without a reliable test case, of course. Since we can't reliably recreate 
>>>>> the situation, I'm having trouble putting that together.
>>>>>
>>>>> This seems to happen more often for me when I'm switching between 
>>>>> substantially-different Git branches, so I thought it might have to do 
>>>>> with the /work directory having older versions of the JSPs/TAGs, but one 
>>>>> of my colleagues claims to clean her "/work" directory every time she 
>>>>> switches branches, and before starting Tomcat, and still getting the 
>>>>> issue.
>>>> What is the relationship between Git and Tomcat, exactly?
>>>>
>>>> Does Tomcat load an app (or its files) directly from a version
>>>> controlled file system?
>>>>
>>>>
>>>> p
>>>>
>>>>
>>>>
>>>>> Thanks in advance for any help!
>>>>> Jim
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>> Is any part of the compiled output, under /war in version control?
>> (It should not be).
>>
>>
>> p
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org


I wasn't clear.

What I'm getting at is this: your release process should produce a
.war (or exploded directory) that is copied to Tomcat and that Tomcat
should not be reading any part of the app from the /war directory - a
source controlled directory.

If this is the case?

If this is a common feature of you & your colleagues dev environments
it's a candidate for the cause, in my view.


Another common reason is timestamps on files not matching
server/machine time, but I don't think this fits your description.


p

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to