You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/10/07 13:36:59 UTC

DO NOT REPLY [Bug 13357] New: - happyaxis.jsp doen't handle NoClassDefFoundErrors.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13357>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13357

happyaxis.jsp doen't handle NoClassDefFoundErrors.

           Summary: happyaxis.jsp doen't handle NoClassDefFoundErrors.
           Product: Axis
           Version: 1.0-rc1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Samples
        AssignedTo: axis-dev@xml.apache.org
        ReportedBy: Brian.Ewins@btinternet.com


I just had this problem reporting in an email from someone trying to trace a
problem seen in happyaxis.jsp using my own fingerprint.jsp, distributed with
axis (well if you stick your head above the parapet...). 

The problem was that the classes searched for by happyaxis were being found ok,
but that classes they in turn depended on were not being found - in this case, I
believe javax.activation.DataSource, a dependency of mail.jar, wasn't being
found because the user had put activation.jar in the webapp, but mail.jar was in
the tomcat common lib directory.

This isnt a difficult problem to handle better - see code marked //BE below.:

    int probeClass(JspWriter out,
                   String category,
                   String classname,
                   String jarFile,
                   String description,
                   String errorText,
                   String homePage) throws IOException {

       try { //BE
       Class clazz = classExists(classname);
       if(clazz == null)  {
            String url="";
            if(homePage!=null) {
                url="<br>  See <a href="+homePage+">"+homePage+"</a>";
            }
            out.write("<p>"+category+": could not find class "+classname
                    +" from file <b>"+jarFile
                    +"</b><br>  "+errorText
                    +url
                    +"<p>");
            return 1;
        } else {
            String location = getLocation(out, clazz);
            if(location == null) {
                out.write("Found "+ description + " (" + classname + ")<br>");
            }
            else {
                out.write("Found "+ description + " (" + classname + ") at " +
location + "<br>");
            }
            return 0;
        }
       } catch(NoClassDefFoundError ncdfe) { //BE, and remainder of method
            String url="";
            if(homePage!=null) {
                url="<br>  See <a href="+homePage+">"+homePage+"</a>";
            }
            out.write("<p>"+category+": could not find a dependency of class
"+classname
                    +" from file <b>"+jarFile
                    +"</b><br>  "+errorText
                    +url
                    +"<br>The root cause was: "+ncdfe.getMessage()
                    +"<br>This can happen e.g. if "+classname+" is in" 
                    +" the 'common' classpath, but the dependency is"
                    +" only in the webapp classpath."
                    +"<p>");
            return 1;
          }

    }

Steve, since I guess this will fall to you - if you want this sent as a patch
instead, just add that as a comment here, I'll get around to it later
today...dont have cvs handy just now.