在servlet中刚调用其他类的方法就报错

控制可以打印“开始转换。。。”,但是执行下一句马上就抛出类未找到的异常,这个类是方法里面的一个类,但是根本就没有进入doc2Html这个方法体中就抛出了异常,单独运行测试ToWord中的方法是可以的。
servlet:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ......
            try{
                        ......
                        System.out.println("开始转换。。。");
                    resultFile= ToWord.doc2Html("F:/upload/"+filename, "F:/change");
                }
            }
        }catch (Exception e) {
            message= "文件上传失败!";
            e.printStackTrace();

        }
}

ToWord.class

public class ToWord(){

                    doc2Html(){
                    ......
                    System.out.println("连接中。。。");
                    OpenOfficeConnection connection =
                    new SocketOpenOfficeConnection(soffice_host, Integer.parseInt(soffice_port));
                    System.out.println("连接:"+connection);
                    ......
                    }
    }

控制台:

开始转换。。。
六月 28, 2017 11:38:13 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [UploadServlet] in context with path [/TestIOStream] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at com.fdauto.servlet.UploadServlet.doGet(UploadServlet.java:99)
at com.fdauto.servlet.UploadServlet.doPost(UploadServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

5个回答

ClassNotFoundException,用的第三方插件转换文件,是不是 少了 jar 包?

qq_34350475
qq_34350475 回复sinat_38913556: !还真是这样!!明明看起来就是跟系统还有tomcat的lib同等的存在啊,都是build path导进去的......万分感谢!
3 年多之前 回复
sinat_38913556
sinat_38913556 回复qq_34350475: User Library本地可以运行 服务器不行 你要放在WEB-INF下的lib
3 年多之前 回复
qq_34350475
qq_34350475 我没有放在WEB-INF下的lib中,我把这个转换需要的的jar都放在自定义的User Library中,这样是否有问题?没有在运行在服务器上的时候是可以的
3 年多之前 回复
sinat_38913556
sinat_38913556 回复qq_34350475:jar是否放到工程WEB-INF下的lib
3 年多之前 回复
qq_34350475
qq_34350475 import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; 实现的那个方法我是在那个类中的main方法里测试过了的,包导进去了,结果这边调用提示没找到?
3 年多之前 回复

F:/upload/"+filename 这个路径是不是应该用 \

qq_34350475
qq_34350475 回复sinat_38913556: 哦~学到了,但是我修改之后问题仍然存在,为什么还没有进入方法体就抛异常了呢?
3 年多之前 回复
sinat_38913556
sinat_38913556 windows的路径分隔符是\ linux是/ 一般都这么写"F:"+File.separator+"upload" 用File.separator
3 年多之前 回复
qq_34350475
qq_34350475 加"\"的话不是要加个转义的变成"\\"吗,我也不知道有啥区别,但是我觉得“/”比较方便,也可以找得到路径
3 年多之前 回复

resultFile= ToWord.doc2Html("F:/upload/"+filename, "F:/change");

不能写绝对路径

qq_34350475
qq_34350475 那该怎么办呢?我要传的文件就是在本地磁盘里,而且我测试的时候就是用的直接写路径没有报错
3 年多之前 回复

doc2Html()方法不传参数啊

qq_34350475
qq_34350475 额,我没写出来,是这样的:public static File doc2Html(String inputFilePath, String outputFolder) throws FileNotFoundException{}
3 年多之前 回复

com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection 去tomcat里面看看,你有没有这个类的class文件

qq_34350475
qq_34350475 已经解决了,我把包放到WEB-INF下的lib里就可以了,原先我是放在自定义添加的userlibrary里,所以找不到
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐