Apache tomcat 错误(没有来自 eclipse 或 xampp tomcat)

Posted

技术标签:

【中文标题】Apache tomcat 错误(没有来自 eclipse 或 xampp tomcat)【英文标题】:Apache tomcat error (no from eclipse or xampp tomcat) 【发布时间】:2017-06-14 04:39:55 【问题描述】:

我在使用 Documents4j 库从 .docx 转换为 .pdf 时遇到问题,这仅在我从 apache tomcat 安装运行应用程序时发生。

但是,如果应用程序使用 Eclipse 或 XAMPP 执行,则 apache tomcat 可以正常工作。

我已经使用 apache tomcat 8 和 8.5 尝试了 Windows 10、Windows 7 和 Windows Server 2012,但问题仍然存在。

Eclipse 或 XAMPP 在运行 apache tomcat 时会做一些“事情”以使其正常工作

jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="com.documents4j.api.IConverter, 
    com.documents4j.job.LocalConverter, 
    com.documents4j.api.DocumentType, 
    java.io.File" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<%
    IConverter converter = LocalConverter.make();
    converter.convert(new File("C:\\test\\test.docx")).as(DocumentType.DOCX).to(new File("C:\\test\\test.pdf")).as(DocumentType.PDF).execute();
%>
</body>
</html>

依赖关系:

<dependencies>
    <!-- Local dependencies -->
    <!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-local -->
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-local</artifactId>
        <version>1.0.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-transformer-msoffice-word -->
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer-msoffice-word</artifactId>
        <version>1.0.2</version>
    </dependency>
</dependencies>

错误:

org.apache.jasper.JasperException: com.documents4j.throwables.ConverterException: Conversion failed for an unknown reason
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:565)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.documents4j.throwables.ConverterException: Conversion failed for an unknown reason
    com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:90)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)

【问题讨论】:

可能是安全问题。它是否适用于实际在网络应用自己的目录中的文件? 【参考方案1】:

您可以尝试为转换器指定一个显式的基本文件夹。应用程序容器通常会定义一个与默认临时文件夹不同的隐式临时文件夹,也许您的设置禁止从该文件夹中执行脚本,这可能会导致您的麻烦。您可以通过在运行时检查java.io.tmpdir 属性来检查临时文件夹。

作为另一个问题,请确保您的基本文件夹不包含任何空格。请也更新到 1.0.3,其中更新包含对此类空间的改进处理。 Maye Tomcat 安装在“程序文件”中,这可能是问题所在。

【讨论】:

以上是关于Apache tomcat 错误(没有来自 eclipse 或 xampp tomcat)的主要内容,如果未能解决你的问题,请参考以下文章

为 Apache/Tomcat 负载平衡启用粘性会话模式

apache与tomcat整合后,apache出现错误代码503是啥意思

eclipse中启动tomcat出现错误: 找不到或无法加载主类 org.apache.tomcat.startup.Main

Target runtime Apache Tomcat v6.0 is not defined.错误解决方法

环境搭建--apache/tomcat/nginx

tomcat-jk-apache整合后 地址UrlRewriter 重写乱码的问题