可正常编译,运行却提示找不到该类。

大轩 发布于 2017/08/30 23:23
阅读 361
收藏 0

我创建了一个servlet类,里面有一处代码使用到了com.sun.deploy.util.ArrayUtil,可以编译通过,但通过Tomcat运行触发却提示找不到这个类(异常处已经标记红色),想请教下大家可能是什么原因造成的?

异常截图:

类:

package cn.com.liuxuan.servlet;
import com.sun.deploy.util.ArrayUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by daxuan on 2017/8/30.
 */
public class FormServlet extends HttpServlet {


//    getParameter 用于获取单个参数
    private String demoGetParameter(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//     由于浏览器URL中默认采用IOS8859-1编码,所以需要将URL中中文进行转码。
        String name = new String(req.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
        String age =  req.getParameter("age");
        return "name:"+name+"<br/>age:"+age;
    }

    // getParameterValues 用户获取参数中含有多个值
    private String demoGetParameterValues(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String [] interests = req.getParameterValues("interests");

        return "interest:"+ ArrayUtil.arrayToString(interests);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应内容类型
        resp.setContentType("text/html;charset=UTF-8");

//        String message = demoGetParameter(req,resp);
        String message = demoGetParameterValues(req,resp);
        PrintWriter out = resp.getWriter();
        out.print(message);
        System.out.println("in doGet...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
        System.out.println("in doPost...");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("FormServlet 被执行...");
    }
}

IDEA配置:

加载中
0
我今年大三
我今年大三

 = = idea配置下artifacts.目测没导出相关包

0
rz
rz
看看tomcat的应用目录里面是不是没有jar包
0
两广总督bogang
两广总督bogang

com.sun.deploy.util.ArrayUtil这个class在旧版本的jdk里是不存在的。

建议你用commons.lang的ArrayUtils,并且将其jar放到WEB-INF/lib下面

0
MatchL
MatchL

clean 项目,发布tomcat clean,然后publish,有可能是tomcat 的war 包还是原来的,jar包没打进去

0
Kit_lee
Kit_lee

能编译通过是因为你开发环境IDE里工程的classpath引入了有ArrayUtils的jar包或类,tomcat里没有是因为你没有将这个jar包或类放到tomcat正在跑的工程里。如此而已,不是能编译就是OK了

0
大轩
大轩
谢谢大家的解答,我把deploy.jar包手工导入到artifacts下就正常了。但有一点还是觉得比较奇怪,为何“com.sun.deploy.util”下的其他类在我手工导入“deploy.jar”前也可以正常使用,而ArrayUtil类则需要手工导入“deploy.jar”之后才可以用。😅
0
polly
polly
尽量不要用comsun包,如无必要,尽量减少jar的引入,个人建议
返回顶部
顶部