【问题标题】:can not resolve to a type in JSP compilation manually deployment in tomcat无法解析到JSP编译中的类型手动部署在tomcat中
【发布时间】:2019-03-23 09:01:26
【问题描述】:

我是 Java Web 开发的新手。我正在尝试在 Apache Tomcat (9.0.17) 中部署 Web 应用程序。我已经安装了预装了 Java OpenJDK 的 Linux 操作系统。我无法编译 JSP。

终端中“java -version”的输出:

openjdk version "1.8.0_202"
OpenJDK Runtime Environment (build 1.8.0_202-b26)
OpenJDK 64-Bit Server VM (build 25.202-b26, mixed mode)

我已将我的 java 包放在 TOMCAT_INSTALLATION_DIR/webapps/app/WEB_INF/classes/ 中。这里 TOMCAT_INSTALLATION_DIR 是我提取 apache-tomcat-9.0.17.tar.gz 文件的目录。 在类目录中,我有一个名为 abc 的 java 包。在里面,我放了 Test.java

这是Test.java中的代码

package abc;
public class Test{
    public  String f(){
            return ("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
    }
    public Test(){
        System.out.println("I am created");
    }
}

我成功编译它并放入我的 Test.java 文件所在的同一目录(在 abc 目录内)。

我在 WEB-INF 文件夹中创建了 web.xml。 web.xml 中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>app</display-name>
  <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

我在 app/ 目录中有 index.jsp 文件。 JSP 内容:

<%@ page  import="abc.*"%>
<!DOCTYPE html>
<html>
<head>

<title>Insert title here</title>
</head>
<body>
    <%
    Test cc=new Test();
    cc.f();
    %>
</body>
</html>

我在安装目录内的 bin 目录中通过 ./cataline.sh run 命令运行 apache。然后我打开 localhost:8080/app URI。我遇到了错误

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

An error occurred at line: [10] in the jsp file: [/index.jsp]
Test cannot be resolved to a type
7: </head>
8: <body>
9:  <%
10:     Test cc=new Test();
11:     cc.f();
12:     %>
13: </body>


An error occurred at line: [10] in the jsp file: [/index.jsp]
Test cannot be resolved to a type
7: </head>
8: <body>
9:  <%
10:     Test cc=new Test();
11:     cc.f();
12:     %>
13: </body>


Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)

【问题讨论】:

    标签: java jsp tomcat servlets


    【解决方案1】:

    感谢您在问题中提供详细说明。我根据这些详细信息设置了网络应用程序,发现了两个问题:

    1. not WEB_INF but WEB-INF。请检查文件夹名称是否确实是WEB-INF。
    2. 这里是updated index.jsp,以便返回值显示在网页上。 JSP 文件中的代码在 tomcat 服务器中执行,并且任何 System.out.println 行都将记录在服务器日志中(即 TOMCAT_INSTALLATION_DIR/logs/catalina.out )。同样,除非您使用 &lt;%= variable %&gt;,否则从函数调用返回的值不会显示。
    <%@ page  import="abc.*"%>
    <!DOCTYPE html>
    <html>
    <head>
    
    <title>Insert title here</title>
    </head>
    <body>
        <%
        Test cc=new Test();%>
        <%= cc.f() %>
    </body>
    </html>
    

    如果这些更改不起作用,您能否将Tomcat安装目录下所有文件的整个文件夹结构的截图粘贴?我问这个是因为其他一切都是正确的,它对我有用。

    My Local Setup Folder Structure My Local WebApp Index Page

    【讨论】:

    • 谢谢@deepak。这只是 WEB-INF 的命名问题。
    • @KavarRushikesh 我很高兴能帮上忙
    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2012-07-17
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多