2017-01-28 2 views
2

Ich habe ein Problem mit der Documents4j-Bibliothek von DOCX zu PDF konvertieren, die nur passiert, wenn ich die Anwendung von Apache Tomcat-Installation ausführen.Apache Tomcat Fehler (Nein von Eclipse oder Xampp Tomcat)

Wenn die Anwendung jedoch mit Eclipse oder XAMPP ausgeführt wird, funktioniert apache tomcat ordnungsgemäß.

Ich habe Windows 10, Windows 7 und Windows Server 2012 mit Apache Tomcat 8 und 8.5 versucht, aber das Problem bestehen.

Eclipse oder XAMPP tun "etwas", wenn Apache Tomcat ausgeführt wird, der es richtig

jsp Arbeit macht:

<%@ 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> 

Abhängigkeiten:

<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> 

Fehler:

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

Könnte eine Sicherheitssache sein. Funktioniert es für Dateien, die sich tatsächlich in den eigenen Verzeichnissen der Web-App befinden? – nitind

Antwort

1

Sie kann versuchen, einen expliziten Basisordner für den Konverter anzugeben. Anwendungscontainer definieren oft einen impliziten temporären Ordner, der sich vom standardmäßigen temporären Ordner unterscheidet. Möglicherweise verbietet Ihr Setup die Ausführung von Skripten innerhalb dieses Ordners, was Ihre Probleme verursachen könnte. Sie können den temporären Ordner prüfen, indem Sie die Eigenschaft java.io.tmpdir zur Laufzeit überprüfen.

Als ein weiteres Problem, stellen Sie sicher, dass Ihr Basisordner keine Leerzeichen enthält. Bitte aktualisieren Sie auch auf 1.0.3, wo das Update eine verbesserte Handhabung solcher Bereiche enthält. Maye Tomcat ist in "Programme" installiert, was das Problem sein könnte.