我在Eclipse中的Java Web项目中创建了一个war
文件。它正确地在classes
目录中创建了一个包含已编译源和引用库的lib
和WEB-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.jar
,json-20160810.jar
和json-lib-2.4-jdk15.jar
。
所有这三个文件也存在于eclipse项目中,但它在eclipse中运行完美。我不是这个项目的作者,也不是Java专业人士。所以,我想知道为什么我们为JSON提供了三个文件作为dep?为什么它在eclipse中工作正常而不是Apache Tomcat 7?
答案 0 :(得分:0)
最后一次导入的分号是问题所在。从
更改行<%@page import="org.json.*;"%>
到
<%@page import="org.json.*"%>
解决了问题