2017-01-28 9 views
2

У меня проблема с преобразованием из .docx в .pdf с библиотекой Documents4j, что происходит только при запуске приложения из установки apache tomcat.Ошибка Apache tomcat (нет от eclipse или xampp tomcat)

Однако, если приложение выполнено с Eclipse или XAMPP, apache tomcat работает правильно.

Я пробовал Windows 10, Windows 7 и Windows Server 2012 с apache tomcat 8 и 8.5, но проблема не устранена.

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) 
+0

Возможно, это вещь безопасности. Работает ли он на файлы фактически в собственных каталогах веб-приложения? – nitind

ответ

1

Вы может попытаться указать явную базовую папку для конвертера. Контейнеры приложений часто определяют неявную временную папку, которая отличается от временной папки по умолчанию, возможно, ваша установка запрещает выполнение сценариев из этой папки, что может вызвать проблемы. Вы можете проверить временную папку, указав свойство java.io.tmpdir во время выполнения.

Как еще одна проблема, убедитесь, что ваша базовая папка не содержит пробелов. Обновите также до 1.0.3, где обновление содержит улучшенную обработку таких пространств. Maye Tomcat установлен в «Program Files», что может быть проблемой.

 Смежные вопросы

  • Нет связанных вопросов^_^