2015-08-28 1 views
2

При попытке получить доступ к основному файлу JSP работает в TomEE Embedded, я получаю внутреннюю ошибку сервера со следующим сообщением об ошибке:JSP ошибка компиляции с использованием TomEE Embedded и Java 8

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [1] in the generated java file: [/tmp/apache-tomee814337484264703144/work/Tomcat/localhost/sample/org/apache/jsp/index_jsp.java] 
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files 

Stacktrace: 
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) 
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) 
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) 
    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:662) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) 
    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:731) 

Я использую Java- и (в настоящее время) последней версии TomEE Embedded (1.7.2). Эта зависимость в моем файле POM:

<dependencies> 
    <dependency> 
     <groupId>org.apache.openejb</groupId> 
     <artifactId>tomee-embedded</artifactId> 
     <version>1.7.2</version> 
    </dependency> 
</dependencies> 

Вопрос не связанный с содержанием моего файла JSP, так как это в основном пустое:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<title>Sample</title> 
</head> 
<body> 
    <h1>Sample</h1> 
</body> 
</html> 

Кто-нибудь испытали тот же вопрос? У кого-нибудь есть обходной путь?

ответ

2

После нескольких исследований и экспериментов я понял это сам.

На всякий случай кто-то сталкивается с одной и той же проблемой: кажется, что проблема связана с версией компилятора Eclipse Java (3.5.2), которая используется TomEE для компиляции JSP-файлов. Поскольку в Java 8 были некоторые изменения в формате класса, более старые версии компилятора, похоже, запутались.

Я вытащил в более поздней версии компилятора Eclipse, Java (4.4.2) и исключила старую из TomEE, и теперь все работает, как ожидалось:

<dependencies> 
    <dependency> 
     <groupId>org.apache.openejb</groupId> 
     <artifactId>tomee-embedded</artifactId> 
     <version>1.7.2</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.eclipse.jdt.core.compiler</groupId> 
       <artifactId>ecj</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jdt.core.compiler</groupId> 
     <artifactId>ecj</artifactId> 
     <version>4.4.2</version> 
    </dependency> 
</dependencies>