facebook

NoClassDefFoundError after hot swap [Closed]

  1. MyEclipse Archived
  2.  > 
  3. Bugs
Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #206454 Reply

    schuer
    Member

    Hi,

    I am using eclipse + myeclipse + weblogic 8 (jdk 1.4) and I experience some problems when I use the hot swap feature of the plugin.

    Sometimes it works, but sometimes I got a NoClassDefFoundError. I think that after the hot swap, the ClassLoader loses some classes in its Classpath. The class i modified is always found, but i get this error with other classes of the project.

    My project is composed of several librairies (jars) shared by a web application and an EJB project. My jars are inside the EAR file at the same level than the war and ejb jar.

    Does any body have an idea to work around this problem?

    #206455 Reply

    Hey schuer,

    I’m faced with the same problem as you…
    This happend as soon as I installed Weblogic 8.1 SP2. I did not have this problem with earlier version of weblogic. (SP1).

    Is there a change in the way the classloading works between the two versions… because it has to do
    indeed with classes not being able to be loaded after hot deploy…

    Anyways, hope this can be sorted out because it’s very annoying.
    QUICK FIX is to go back a version of Weblogic Server.

    My Environment:
    – Win2000
    – JDK1.4.2_01
    – Eclipse Version: 3.0.0 Build id: 200402122000
    – MyEclipse Version: 3.7.1 Build id: 200403241200-3.7.1GA

    Thanks in advance,
    Les.

    #206460 Reply

    Scott Anderson
    Participant

    Les,

    Thanks for the follow up. From your comments and what was reported it does sound like a WebLogic issue.

    For some background, when you modify a class that is deployed in the application server, the environment requests that the remote server JVM reload the new class definition. It looks like this request is being honored since the initial report states that the new class is available. However, like all application servers, WebLogic implements a hierarchy of classloaders for each deployed application to limit class visibility as required by the spec. It appears that the update of this hierarchy isn’t occurring correctly. From that, I’d speculate that the problem is either in the JDK, WebLogic, or caused by a strange interaction between the two. To eliminate two of these, I’d personally test WLS 8 SP2 using JDK 1.4.1_07. JDK 1.4.1’s debugging implementation is very solid while 1.4.2’s is still in a bit of “flux” from time to time.

    #206498 Reply

    schuer
    Member

    I am always using Weblogic SP1, so I don’t think it’s a problem of SP.

    Ok, so it seems there is nothing to do for my problem 🙁

    …the problem will maybe be fixed in future SP of Weblogic.

    Thanks for replying.

    schuer.

    #206517 Reply

    Scott Anderson
    Participant

    Actually, it could still be a JDK 1.4.2 interaction problem as many have been reported both here and on the Eclipse newsgroups as various releases of 1.4.2 have come out. 1.4.1 is still worth a try, if you have time.

    #206569 Reply

    Hi Scott,

    Let me explain my setup:

    1) Installed j2sdk1.4.2_01 (to be able to startup eclipse)
    2) Installed Eclipse (unzipped and started once)
    3) Installed MyEclipse
    4) Installed BEA Weblogic Platform 8.1 SP2
    5) Configured Eclipse – MyEclipse in order to use the BEA libraries included with that release – meaning making sure that where pointing to JDK, J2EE … the BEA library settings were chosen (JDK141_05).

    So, I believe that when I startup the server from within MyEclipse, It uses the JDK141_05 and still this does not do the trick…

    If I find the time I will try to do a clean install from scratch on another machine, but I think I will get the same result! 😯
    Do you think that changing step 1 into a 1.4.1_xx version should make a difference ???

    Rgds,
    Les.

    #206586 Reply

    Scott Anderson
    Participant

    Les,

    Do you think that changing step 1 into a 1.4.1_xx version should make a difference ???

    Actually it could make a difference. To start Eclipse with a different JDK, you can simply modify the alias you use to start Eclipse and specify the JDK to use explicitly like this:

    
    eclipse.exe -vm <path-to-javaw.exe>
    
    #206639 Reply

    Hi scott,

    just tried out the -vm option pointing to the JRE1.4.1_05..

    here are the results (deployed exploded, hoping hot swap is ok):

    1) altered JSP… added html code –> 😆 WORKS GREAT
    2) altered JSP… added scriptlet code –> 😆 WORKS GREAT
    3) altered java class … –> 👿 DAMN ClassCastException…

    java.lang.ClassCastException
    at org.apache.struts.action.ActionServlet.getRequestProcessor(ActionServlet.java:855)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6350)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

    Anyways … thanks for the follow up and the suggestion…
    I’ll try to install Weblogic Server 8.1 SP1 and see what happens …
    I’ll keep you posted 8)

    Greetz,
    Les.

    #206640 Reply

    Hi Scott,

    I uninstalle BEA Weblogic Portal 8.1 SP2 and installed BEA Weblogic Server 8.1 SP1….

    And now everything is ok… hot deploy without any problem … 😛
    So I guess that the problem is
    either:
    – Weblogic Portal problem
    – Weblogic SP2 problem

    I might try to post a question to BEA concerning this issue, but I believe that they do not support the hot deployment problems emerging when running their server from within MyEclipse…
    They’ll probably will shift the problem to your side???

    Can I assume that it is not the connector to Weblogic causing the problem?

    Anyways,
    Hope this helps … 😈

    Greetz,
    Les.

    #206641 Reply

    Ooops …. stating the problems…

    either:
    – Weblogic Portal problem
    – Weblogic SP2 problem

    I meant either:
    – Weblogic Platform problem
    – Weblogic Server SP2 problem

    Sorry ’bout that !!

    Les.

    #206643 Reply

    Scott Anderson
    Participant

    Can I assume that it is not the connector to Weblogic causing the problem?

    Yes, you can. It’s the Eclipse debugger that is interacting with the remote VM during hotswap operations. The connector simply sets up the launch and source lookup parameters properly for debugging the server. From what you describe it appears that BEA introduced a problem with JDK 1.4 hotwswap interaction within their classloaders with 8.1 SP2. If this is the case, the problem should be reproducable with any IDE that supports hotswap to remote servers, not just MyEclipse.

    Basically it comes down to this: It was working perfectly with SP1. You installed SP2 and it stopped working. You uninstalled SP2 and it started working again. Seems pretty clear cut. 🙂

    #206712 Reply

    Scott,

    Thanks for the reply…
    I’ll keep working with SP1 for now and see what happens with the releases from BEA…

    Rgds,
    Les.

Viewing 12 posts - 1 through 12 (of 12 total)
Reply To: NoClassDefFoundError after hot swap [Closed]

You must be logged in to post in the forum log in