2013-10-07 129 views
1

我正在研究早些时候由其他人处理过的Java Web应用程序,此人刚刚向我提供了应用程序的源代码。问题是,如果我尝试做一些改变这个应用程序,并在Tomcat上部署(7.0.35)JSP中不会使我得到以下错误:JSP编译问题

JSP Compilation Error

此外,我注意到,这个welcome.jsp的类文件不会被创建。

我可以使应用程序工作的唯一方法是重新安装新版本的tomcat,然后构建,部署和访问原始源代码。当我构建并部署该代码并访问JSP时,它们会正确编译,并且还会在tomcat工作目录中创建.class和.java文件。

之后,我将所有更改都复制粘贴到原始源代码中,并重新部署修改的应用程序,因为在部署和访问原始应用程序后创建了与JSP页面对应的类和java文件,所以它工作正常。

此外,如果我尝试修改JSP,则会出现相同的错误。

我不知道这里出了什么问题。如果有人能帮我解决这个问题,那会很棒。我正在使用的JDK版本是1.6.0_38-b05。 Tomcat也指向相同的JDK版本,我的计算机上没有安装任何其他版本的JDK或JRE。

下面是代码:

<!DOCTYPE html> 
    <%@page import="com.xyz.toolkit.utils.FormConstant"%> 
    <%@page import="org.jasig.cas.client.util.AbstractCasFilter"%> 
    <%@page import="org.jasig.cas.client.validation.Assertion"%> 
    <%@page import="org.jasig.cas.client.util.AssertionHolder"%> 
    <%@page import="java.util.Iterator"%> 
    <%@page import="java.util.List"%> 
    <%@page import="java.util.Map"%> 
    <%@ taglib uri="/WEB-INF/tld/AccessValidateHandlerTag.tld" prefix="toolkit"%> 
    <html> 
    <head> 
    <title>ToolKit</title> 
    <meta http-equiv="Content-Type" content="text/html CHARSET=UTF-8" /> 
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="Expires" content="0" /> 
    <link href="css/jquery-ui-1.10.1.custom.css" type="text/css" rel="stylesheet" /> 
    <link href="css/jquery.ui.tabs.css" type="text/css" rel="stylesheet" /> 
    <link href="css/migration_toolkit.css" type="text/css" rel="stylesheet" /> 
    <script type="text/javascript" src="js/plugins/jquery-1.9.1.js"></script> 
    <script type="text/javascript" src="js/plugins/jquery.validate.js"></script> 
    <script type="text/javascript" src="js/plugins/jquery.dateFormat-1.0.js"></script> 
    <script type="text/javascript" src="js/plugins/jquery-ui-1.10.1.custom.js">   </script> 
    <script type="text/javascript" src="js/plugins/commons.js"></script> 
    <script type="text/javascript" src="js/login.js"></script> 

    <link href="css/jquery.jqplot.css" type="text/css" rel="stylesheet" /> 


    <script type="text/javascript" src="js/plugins/jquery.jqplot.js"></script> 
    <script type="text/javascript" src="js/plugins/jquery.blockUI.js"></script> 
    <script type="text/javascript" src="js/plugins/jqplot.pieRenderer.js"></script> 
    </head> 
    <% 
    String roleAdmin = FormConstant.ROLE_ADMIN + "," + FormConstant.ROLE_ALL; 
String roleUser = FormConstant.ROLE_USER + "," + FormConstant.ROLE_ALL; 
    %> 
    <body> 
<jsp:include page="header.jsp" /> 
<div id="tabs"> 
    <div style="padding-bottom: 10px;"> 
     <div id="welcome_msg"> 
      Welcome 
      <%=session.getAttribute(FormConstant.USER_NAME)%> 
     </div> 
     <div id="logoutBTN"> 
      <button id="logoutButton" onclick="javascript:loadFeedBack();">Logout</button> 
     </div> 
    </div> 
    <div id="feedbackForm"> 
     <form method="POST" action="logout" class="box tableBox"> 
      <div class="form_field"> 
       <div class="box_body"> 
        Thank you for using the Migration Toolkit. Please enter 
        any feedback you may have and tell us how you would like us to 
        improve the user experience. 
       </div> 
      </div> 
      <p style="clear: both"></p> 
      <div class="form_field" class="box_body"> 
       <div class="box_body"> 
        <label for="projectName">User Name :</label> <input type="text" 
         value="<%=session.getAttribute(FormConstant.USER_NAME)%>" 
         disabled /> <input type="hidden" name="userName" id="userName" 
         value="<%=session.getAttribute(FormConstant.USER_NAME)%>" /> 
       </div> 
      </div> 
      <p style="clear: both"></p> 
      <div class="form_field"> 
       <div class="box_body"> 
        <label for="projectName">User Feedback:</label> 
        <textarea id="userFeedBack" name="userFeedBack" 
         style="width: 450px; height:250px"></textarea> 
        <br> 
       </div> 
      </div> 
      <p style="clear: both"></p> 
      <div class="form_field"> 
       <div class="box_body"> 
        <label for="submitFeedback">&nbsp;</label> 
        <button id="submitFeedback" type="submit" style="float: right;">Submit Feedback</button> 
       </div> 
      </div> 
     </form> 
    </div> 
    <ul> 
     <toolkit:AccessValidateHandlerTag group="<%=roleAdmin%>"> 
      <li><a href="pages/generateRule.jsp">Review & Generate 
        Rulesets</a></li> 
     </toolkit:AccessValidateHandlerTag> 
     <toolkit:AccessValidateHandlerTag group="<%=roleUser%>"> 
      <li><a href="pages/codeParser.jsp">Parse a Codebase</a></li> 
      <li><a href="pages/reportViewer.jsp">Generate Consolidated Report</a></li> 
     </toolkit:AccessValidateHandlerTag> 
    </ul> 

</div> 
<jsp:include page="footer.jsp" /> 
    </body> 
    </html> 

这里是Tomcat的配置:使用CATALINA_BASE:

"C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0" 
    Using CATALINA_HOME: "C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0" 
    Using CATALINA_TMPDIR: "C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0\temp" 
    Using JRE_HOME:  "C:\Program Files\Java\jdk1.6.0_38" 
    Using CLASSPATH:  "C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0\bin\bootstrap.jar;C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0\bin\tomcat-juli.jar" 
    Using JAVA_OPTS:  " -Djava.util.logging.config.file="C:\Users\kinjal.doshi\Apache Software Foundation\Tomcat 7.0\conf\logging.properties" -XX:PermSize=256m -XX:MaxPermSize=256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" 

enter image description here

+2

请问你可以把代码放在你的welcome.jsp – Simmant

+0

可能你还没有将jsp jar文件保存在你的类路径中,请检查你的类路径中是否有该jar可用 –

+0

你是如何实际部署的?建造?你有没有考虑把它建设成一场战争?你使用Maven或类似的工具? – eis

回答

0

您是从旧版本的Tomcat的预编译使用JSPC你的JSP并试图在更新的版本上运行它们。通常来自Tomcat的一个主要版本的JspC将与来自相同主要版本的任何其他版本一起工作,但不能保证。为了确保编译正确,您需要使用与您打算运行的相同版本的Tomcat中的JspC。

+0

我从来没有使用JspC,可以吗?请帮助我了解如何识别JspC正在被使用。我没有做任何命令行预编译,所以不知道如何处理这个。 –

+0

另外,如何避免预编译JSP,并在部署时和之后处理这些问题? –

+0

我读了一些关于JspC并检查了我的应用程序的pom.xml。没有添加任何用于预编译JSP的任务。我也检查过web.xml,预编译功能并没有在那里使用,我不明白的是,当我构建和部署它时,原始项目工作正常,而当我构建和部署修改版本的项目时,在相同版本的tomcat和jdk上不起作用。这似乎有点奇怪。如果可以请在这个问题上多说一点,会很高兴 –