Search code examples
servletsred5

Red5, java.lang.NoClassDefFoundError: javax/el/ExpressionFactory


I have coded some flash apps with red5 (1.0.5). But I decided to have a servlet to receive audio files from users(I don't want to use flash this time). I've noticed that I can't open any jsp. Every time I try to open one I get the following servlet exception: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory. If I reload the page, then after a few tries I get something different: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp and then if I reload again, then the first exception I mentioned shows again.Project Explorer. Any help is appreciated. :)

Servlet

    package org.red5.core;

      import java.io.IOException;
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

/**
       * Servlet implementation class Upload
 */
       @WebServlet("/Upload")
       public class Upload extends HttpServlet {
       private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public Upload() {
    }

    /**
         * @see HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response)
     */
           protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse     response)
     */
         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

JSP

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSP</title>
</head>
<body>
    <h1>JSP!</h1>
</body>
</html>

Exception

exception

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:348)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:77)
root cause

java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
    org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:79)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:111)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:77)

Solution

  • Check your red5/plugins directory, you are probably missing the EL implementation jar, usually named: tomcat-embed-el.jar