当前位置: 首页 > 知识库问答 >
问题:

如何在我的项目中使用docx4j?

轩辕嘉平
2023-03-14
    log4j:WARN No appenders could be found for logger (org.docx4j.jaxb.Context).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
at org.docx4j.openpackaging.io3.Load3.get(Load3.java:138)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:353)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:293)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:243)
at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:226)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:162)
at org.docx4j.Docx4J.load(Docx4J.java:176)
at Doc4JReadDOCX.main(Doc4JReadDOCX.java:11)

共有1个答案

袁桐
2023-03-14

您的错误消息试图告诉您需要初始化log4j。通常,您需要告诉它将错误消息打印到控制台或文件中。所以您需要设置一个属性文件,如下所示:

# Root logger option
log4j.rootLogger=DEBUG, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

然后,通过读取属性文件创建一个初始化log4j的servlet。类似于这样:

import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.*;
import com.mysite.*;


public class Log4jInit extends HttpServlet
{
  public void init()
  {
    try{
      String prefix = getServletContext().getRealPath("/");
      String file = getInitParameter("log4j-init-file");
      if(file != null)
      {
        System.out.println("Log4jInit.init - prefix + file: " + prefix + file);
        PropertyConfigurator.configure(prefix + file);        
      }
    }
    catch(Exception e){e.printStackTrace();}
  }

  public void doGet(HttpServletRequest req, HttpServletResponse res){}
}

web.xml文件中,您需要放置以下内容:

<servlet>
  <servlet-name>log4j-init</servlet-name>
  <servlet-class>com.mysite.Log4jInit</servlet-class>
  <init-param>
    <param-name>log4j-init-file</param-name>
    <param-value>WEB-INF/properties/log4j_CONSOLE.properties</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>log4j-init</servlet-name>
  <url-pattern>/log4j-init/*</url-pattern>
</servlet-mapping>
 类似资料:
  • 我要第一次使用GXT图表 我只是从这里得到代码 我的其他GXT小部件正在工作(已添加GXT jar和

  • 我创建了一个NetBeans企业应用程序,它由包装ejb(jar)项目和web(war)项目的ear组成。 我的web项目中有一个servlet,我想在其中使用ejb项目中的一个ejb。

  • 我有一个pycharm项目,大概还有一个Django项目。也许它们是一回事,也许不是——我不确定区别。 总之,在我的settings.py文件中(该文件位于< code>project目录的根目录下,我认为这是我的pycharm项目),我有: 这是否意味着< code>dumpstown是我的项目名称?还是我的pycharm项目名?有什么区别?因为我还有一个名为< code>dumpstownap

  • 在我的spring项目中,我可以像这样用XML定义bean:

  • 问题内容: 我想用Xtend语言编写Java类(仅仅是因为它的简洁性),然后将其编译回Java类,以便在Java项目中使用。就像咖啡脚本。我怎样才能做到这一点? 我尝试像创建新类一样创建Xtend文件,但是出现此错误: 在类路径上找不到必需的库包。 这将禁用智能感知(自动补全)。另外,即使我确实可以正常工作,如何将其编译为Java类? 问题答案: 尝试过同样的事情之后,我可以确认启用Xtend N

  • 问题内容: 在我的Java项目中,我需要使用依赖于 lucene-3.6.2的* neo4j-1.9.3 和 依赖于 lucene-4.4.0的 ElasticSearch 。我知道,如果我想直接使用两个版本的Lucene,可以使用ClassLoader从Lucene加载不同的类。 * 但是问题是我现在不会直接使用lucene的api。有什么方法可以在neo4j的api运行时加载lucene-3.