2015-12-01 1 views
1

У меня есть эта JSP:javax.el.ExpressionFactory.newInstance() не найден на Jetty и Java 7

<%@ page pageEncoding="UTF-8" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<c:set var="contextPath" value="http://localhost:8000/"/> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 

     <link type="text/css" rel="stylesheet" href="${contextPath}/css/styles.css"/> 
</head> 

<body> 
    <!-- some html --> 
</body> 

Когда я перейти на эту страницу, я получаю следующую ошибку:

java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory; 
at org.apache.jasper.compiler.JspUtil.getExpressionFactory(JspUtil.java:1182) 
at org.apache.jasper.compiler.JspUtil.validateExpressions(JspUtil.java:644) 
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:752) 
at org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:946) 
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2291) 
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2341) 
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2347) 
at org.apache.jasper.compiler.Node$Root.accept(Node.java:498) 
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2291) 
[...] 

Окружающая среда для выполнения этой страницы - Java 7 и Jetty.

Если я удаляю $ {contextPath}, работает нормально.

Почему у меня такая ошибка?

С наилучшими пожеланиями

ответ

1

Причиной вашей ошибки является 2 различной баночкой EL языка в вашей CLASSPATH.

  • EL версия 2.1 является то, что активно используется вашим веб-приложение, и является причиной ошибки (этот метод не существует в EL 2.1)
  • EL версия 2,2, что ваш веб-приложение должно быть используя для javax.el.ExpressionFactory.newInstance(), так как этот метод был введен в EL 2,2

Убедитесь, что вы используете правильную версию Lib EL, и что вы не имеете несколько его версий, присутствующих в вашем веб-приложение

Кроме того, почему бы просто не использовать ...

<link type="text/css" rel="stylesheet" 
     href="${pageContext.request.contextPath}/css/styles.css"/> 

и не использовать все значение <c:set> Вы используете? (ваш выбор полного URI - это плохая идея)

+0

Это всего лишь пример. Такая же ошибка с вашим кодом – Mou

+0

Работает как шарм. Проблема заключалась в том, что библиотека jsp была добавлена, как и при условии, что плагин jetty не добавил эту библиотеку – Mou