2

我遇到了一个奇怪的(至少对我来说)案例。当我从 Eclipse 运行我的项目时,一切都很好。但是,当我将项目导出到 jar 文件时,它会因InvocationTargetException而失败。我正在使用其他外部库,一切运行良好(程序运行时间约为 5 分钟),最后会创建一个 docx。

try {
  WordprocessingMLPackage wordMLPackage;
  wordMLPackage = WordprocessingMLPackage.createPackage(); // this is Line 1320
  // more lines here
} catch (Exception e) {
  e.printStackTrace();
}

我在 cmd 中运行,它打印:

线程“主”java.lang.reflect.InvocationTargetException 中的异常

引起:java.lang.ExceptionInInitializerError

在 com.lesswire.wita.Wita.CreateReport(Wita.java:1320)

我怎样才能让它在我的罐子里工作?

谢谢,龙萨克

4

3 回答 3

0

我认为这是您的应用程序的类路径问题。检查 Eclipse 类路径(在您的项目属性中)并将它与您在 Eclipse 之外运行应用程序时设置的类路径进行比较。com.lesswire.wita最可能的罪魁祸首是包含该包或其依赖项之一的第三方库。

于 2012-09-21T08:26:45.090 回答
0

毕竟,这个 bug 的主要原因与 @alexei-kaigorodov 猜测的 Log4jConfigurator 相关。但!log4j 已配置,但不适用于 docx4j!我在网上搜索了 logj.xml 文件,并尝试了一些。

这是它的完成方式:

在 Eclipse 中,确保 log4j.xml 位于类文件夹中(通常将其称为 CLASS PATH)。如果你不想放在那里,你可以创建并设置一个。在 Eclipse 中打开Java Build Path并导航到Libraries选项卡。然后选择“添加类文件夹”并选择新创建的文件夹。

由于某种原因,当我进行Clean Build时,log4j.xml 被覆盖。确保您的 logj4.xml 在Clean之后。

于 2012-09-25T08:41:54.650 回答
0

另一种可能性是应用程序正在使用依赖于较新 JRE 版本的库,但您安装的 JRE(操作系统路径环境中的 java.exe)是旧版本。

于 2014-08-14T13:52:03.710 回答