| Summary: | Deployment feature doesn't deploy classpath dependencies. | ||
|---|---|---|---|
| Product: | [WebTools] WTP Java EE Tools | Reporter: | Jose Guerra <jg.guerra> |
| Component: | jst.j2ee | Assignee: | Rob Stryker <stryker> |
| Status: | RESOLVED FIXED | QA Contact: | Chuck Bridgham <cbridgha> |
| Severity: | minor | ||
| Priority: | P3 | CC: | amorelos, calvin.vette, ccc, fashoom, francis.andre.kampbell, larryisaacs |
| Version: | 3.1 | ||
| Target Milestone: | 3.2.3 | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Whiteboard: | |||
|
Description
Jose Guerra
Jose, Eclipse 3.5.2 corresponds to WTP 3.1.2. Since the WTP 3.1.x development stream is shut down (and WTP 3.2 is shutting down), I am targetting this at 3.2.1. Assigning to Rob for initial investigation. Hi Jose, Please be aware that the scenaio you provide works fine for a large number of users, including myself. The behavior you are seeing is coming from something unique to your situation. Given that I've never been able to duplicate this problem, it's hard for me to guess what it is that might be unique. It's not clear if "reproducibly always" means it always happens for a particular project or always happens for all projects. Does this happen for just one of your projects or many, including new projects? For now, it might help to attach the ".classpath" and ".settings/org.eclipse.wst.common.component" files from a project exhibits this behavior. Larry This bug has cropped up consistently over the years. It is very re-creatable and not unique to Jose. I did a fresh installation of Eclipse-3.5.2 Reporting for MacOS X Cocoa (32-bit). I created a new Dynamic Web Project. I modified the build path, creating 2 new User Libraries - 1 for Spring Core 3 and 1 for Spring Security 3 (the specific libraries are irrelevant). I added both to the build path. I exported both in the JEE Module Dependencies. I added in an index.html in the WebContent folder I modified the web.xml to include a ContextListener and context-param for Spring I added a spring-beans.xml file. I ran it on the server, creating an Apache Tomcat 6.0.20 local server in the process. Tomcat's console dumped a ClassNotFoundError on the ContextListener: SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener I verified in the deployed WEB-INF/lib folder that there were no jars. No amount of twiddling seems to get it to copy them over. That includes going back to the build path and JEE Module dependencies and reassert them. That include removing the project from the server, republishing/restarting the server, then re-adding the project back on. It continues to fail to copy the dependent libs into WEB-INF/lib If I removed the project from the server, restart Eclipse, then re-add and restart the project it will usually work. However, I forgot to add commons-logging, so it gave me a different ClassNotFoundError. I added the new UserLibrary to the project build path, exported it, and checked it in the JEE Module Dependencies. I republished and redeployed. The same ClassNotFound for commons-logging. I verified in the deployed WEB-INF/lib folder that commons-logging jars were not there (but the Spring jars were). I knew this was not a unique bug - it's been happening consistently. Sometimes it seems to go away in various patches of Eclipse, but it often comes back. I've had the same bug happen on different versions of JBoss and Tomcat. I've had the reverse happen when I *remove* a UserLibrary that's a JEE Module dependency that continues to get published anyways. I've looked at the org.eclipse.wst.common.component file as well as the .classpath - there's nothing there to indicate that it isn't working properly. It's something it's holding in memory. Have you guys tested with a 3.2 build yet? If not, please do. The code was substantially changed between wtp 3.1 and 3.2. I patched my current WTP installation with the 3.1 patches available via the WTP Update Site and now my project is working correctly, you may want to try the same. It looks to me that another feature could be broken now, but I am not sure. Either Tomcat or glassfish JEE projects don't work the classpath option under the Run Configuration window. Currently my Tomcat/Glassfish projects have a directory WEB-INF/config. This directory keeps the log4j.properties file. I added the directory to the classpath following Run -> Run Configuration -> Classpath -> Advanced -> add Folders. Now on either project, log4j has left to work. The message ... log4j:WARN No appenders could be found for logger (tng.iac.tracking.vme.service.ws.VMEMasterService). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. is on and on. This is happening to me after the update. Maybe I messed up something on my projects, but I don't certainly know what's happening now. Big pardon guys! The problem I described before related to the classpath, it's happening only on Glassfish projects. On Tomcat based projects is OK. Cheers Rob, since 3.2.2 is declaring, I am retargetting to 3.2.3. Please retarget as appropriate. As per Jose's comment this seems fixed... If this isn't fixed or is still replicatable, please feel free to re-open =] This is still broken exactly as reported by Calvin in comment 3 with WTP 3.2.2. I upgraded from an earlier WTP to 3.2.2 to see if that would fix the problem, but no luck. As reported, jars added to the project via Properties - Java Build Path - Libraries are never copied to the WEB-INF/lib directory, resulting (with a Spring project) in Tomcat throwing java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener I can also confirm as reported that this bug has been hanging around for years. I have verified that neither jars added directly nor jars in user libraries get copied. It could be this is related to: https://bugs.eclipse.org/bugs/show_bug.cgi?id=354346 |