在tomcat中手动部署的JSP编译无法解析为某种类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在tomcat中手动部署的JSP编译无法解析为某种类型相关的知识,希望对你有一定的参考价值。

我是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文件的目录。在classes类目录中,我有一个名为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运行命令运行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)

答案

感谢您提出问题的详细说明。我按照这些细节设置了网络应用,发现了两个问题:

  1. 这是not WEB_INF but WEB-INF。请检查文件夹名称是否确实是WEB-INF。
  2. 这是updated index.jsp,以便返回的值显示在网页上。 JSP文件中的代码在tomcat服务器中执行,任何System.out.println行都将记录在服务器日志中(即TOMCAT_INSTALLATION_DIR / logs / catalina.out)。同样,除非使用<%= variable %>,否则不会显示函数调用返回的值。
<%@ 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

以上是关于在tomcat中手动部署的JSP编译无法解析为某种类型的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot——SpringBoot打jar包并部署到Tomcat

无法为 JSP 编译类:无法解析 java.util.Map$Entry 类型。它是从所需的 .class 文件中间接引用的

Tomcat 无法为 JSP 编译类

解决jsp里面写java代码 HTTP 状态 500 - 无法为 JSP 编译类 System.out cannot be resolved to a type

myeclipse中tomcat部署编译jsp页面后,浏览器显示中文乱码

idea热部署(更新jsp代码不用重编译Tomcat)