Tomcat5报错:-source 1.3 中不支持泛型

本文介绍了解决Tomcat5.0在编译含有泛型的JSP文件时遇到的错误的方法。通过调整Tomcat配置文件web.xml中的JSP编译参数,将源代码和目标代码版本设置为1.5,成功解决了不支持泛型的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

把项目发布到Tomcat5.0中。运行后报错。

控制台出现如下信息:

----------------
2011-8-6 23:34:56 org.apache.jasper.compiler.Compiler generateClass
严重: Error compiling file: /C:/Program Files/Apache Software Foundation/Tomcat
5.0/work/Catalina/localhost/test//org/apache/jsp/search\test_jsp.java     [javac]
Compiling 1 source file

C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\
test\org\apache\jsp\Search\test_jsp.java:257: -source 1.3 中不支持泛型
(请使用 -source 5 或更高版本以启用泛型)
        List<String> testList = new ArrayList<String>();
            ^
1 错误
-----------------


估计是tomcat的版本的问题引发的错误:不支持泛型。


在网上查找的资料:这是因为tomcat在编译JSP文件的时候,使用的是JDK1.3版本,而泛型是在JDK1.5以后才出现的。所以不能编译。


解决办法:修改tomcat的配置即可。


修改tomcaat5中web.xml文件,修改成如下样子:

-------------

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
    <param-name>compilerSourceVM</param-name>
    <param-value>1.5</param-value>
    </init-param>
    <init-param>
    <param-name>compilerTargetVM</param-name>
    <param-value>1.5</param-value>
    </init-param>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
      <param-name>compiler</param-name>
      <param-value>modern</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

-------------

保存web.xml文件。重启Tomcat5即可。


                 2011/08/06

 

将下列代码针对jdk1.3进行兼容:import java.lang.String ; import java.io.*; import java.net.*; public class SimpleWebServer { public static void main(String[] args) throws IOException { int port = 8080; ServerSocket serverSocket = new ServerSocket(port); System.out.println("Server started on port " + port); while (true) { Socket clientSocket = serverSocket.accept(); handleRequest(clientSocket); clientSocket.close(); } } private static void handleRequest(Socket clientSocket) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintStream out = new PrintStream(clientSocket.getOutputStream()); String requestLine = in.readLine(); if (requestLine == null) { return; } String[] tokens = requestLine.split(" "); String uri = tokens[1]; System.out.println("uri = " + uri); String fileName = uri.substring(1); System.out.println("FileName: " + fileName); File file = new File(fileName); if (file.exists()) { String contentType = getContentType(file); String response = "HTTP/1.1 200 OK\n" + "MIME-version:1.0" + "\n" + "Content-Type:" + contentType + "\n" + "Content-Length: " + file.length() + "\n" + "\n"; out.print(response); // 将文件内容传送 DataInputStream d = new DataInputStream(new FileInputStream(file)); int len = (int) file.length(); byte[] buf = new byte[len]; d.readFully(buf);//从输入流中读取一些字节,并将它们存储在缓冲区数组 b 中。 out.write(buf, 0, len);//将 len 字节从指定的初始偏移量为off=0的 byte数组写入此流。如果启用自动刷新,则调用 flush 方法 out.flush();//刷新该流的缓冲。 d.close(); out.flush(); } else { String notFound = "<html><head>
最新发布
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值