无法为JSP编译类。 Tomcat 7.0.82

时间:2017-12-21 21:33:50

标签: java json eclipse tomcat

我在Eclipse中的Java Web项目中创建了一个war文件。它正确地在classes目录中创建了一个包含已编译源和引用库的libWEB-INF个文件夹。当我在Apache Tomcat 7.0.82上部署这个项目时,除Main2.jsp之外的大多数页面运行正常,我得到以下异常

  

输入例外报告

     

message无法为JSP编译类

     

description服务器遇到阻止它的内部错误   完成此请求。

     

例外

     

org.apache.jasper.JasperException:无法为JSP编译类     org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:675)     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)     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Main.jsp的代码低于

<%@page import="assemble_xml.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%> 
<%@page import="org.json.JSONObject"%>
<%@page import="org.json.*;"%>
<%
System.out.println("\n*** Inside Main2.jsp");
String data1 = request.getParameter("data");
String sourceApiId = request.getParameter("sourceApiId");
String bpFile = request.getParameter("bpFile");
String context = getServletContext().getRealPath("/");
//data1 = "{000:{name:mkyong.com,messages:[msg 1,msg 2,msg 3],age:100},001:{name:mkyong.com,messages:[msg 1,msg 2,msg 3],age:100}}";
JSONObject jsonObject = new JSONObject(data1);

System.out.println("\n*** Inside Main2.jsp: jsonObject"  + data1);

Operation op1 = new Operation ("");

HashMap<String, Operation> hm_xml_att  = op1.readOpAttribFromXML2(context+bpFile, jsonObject);
op1.writeXML(hm_xml_att,context + "auth_refine_output" + File.separatorChar + sourceApiId);

//BP bp = new BP(context,context + "\\auth_refine_output\\Mappings.txt",context + "\\auth_refine_output\\" + sourceApiId,context + "\\auth_refine_output\\OFBiz_Process.xml");

//response.setContentType("text/html"); 
//response.getWriter().write("Dataflow file (" +context + "\\auth_refine_output\\OFBiz_Process.xml) generated successfully");  
//System.out.println("\n*** Inside Main2.jsp: Dataflow file (" +context + "\\auth_refine_output\\OFBiz_Process.xml" + ") generated successfully");
%> 

我很确定问题是由于以下两个导入

造成的
<%@page import="org.json.JSONObject"%>
<%@page import="org.json.*;"%>

因为,当我删除它们时,错误仍然相同,但现在是因为没有将JsonObject解析为某种类型。具有讽刺意味的是,我在WEB-INF\lib文件夹中有三个以上的文件似乎包含JsonOject。这些文件为json-20090211.jarjson-20160810.jarjson-lib-2.4-jdk15.jar

所有这三个文件也存在于eclipse项目中,但它在eclipse中运行完美。我不是这个项目的作者,也不是Java专业人士。所以,我想知道为什么我们为JSON提供了三个文件作为dep?为什么它在eclipse中工作正常而不是Apache Tomcat 7?

1 个答案:

答案 0 :(得分:0)

最后一次导入的分号是问题所在。从

更改行
<%@page import="org.json.*;"%>

<%@page import="org.json.*"%>

解决了问题