Java 如何在jar运行时防止InvocationTargetException?

Java 如何在jar运行时防止InvocationTargetException?,java,eclipse,docx4j,invocationtargetexception,Java,Eclipse,Docx4j,Invocationtargetexception,我遇到了一个奇怪的(至少对我来说)案例。 当我从Eclipse运行我的项目时,一切都很好。但是当我将项目导出到jar文件时,它会因InvocationTargetException而失败。我正在使用其他外部lib,一切运行正常(程序运行时间约为5分钟),并在最后创建了一个docx try { WordprocessingMLPackage wordMLPackage; wordMLPackage = WordprocessingMLPackage.createPackage(); //

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

try {
  WordprocessingMLPackage wordMLPackage;
  wordMLPackage = WordprocessingMLPackage.createPackage(); // this is Line 1320
  // more lines here
} catch (Exception e) {
  e.printStackTrace();
}
我在cmd中运行,它打印:

线程“main”java.lang.reflect.InvocationTargetException中出现异常

原因:java.lang.ExceptionInInitializeError

位于com.lesswire.wita.wita.CreateReport(wita.java:1320)

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


谢谢,roncsak

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

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

毕竟,这个错误的主要原因与@alexei kaigorodov猜测的Log4jConfigurator有关。但是log4j已配置,但对于docx4j来说不太好! 我在网上搜索了logj.xml文件,并尝试了一些

以下是它是如何完成的:

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


由于某种原因,当我进行干净的构建时,log4j.xml被覆盖。确保您的logj4.xml在清理之后正确无误。

毕竟,这个错误的主要原因与@alexei kaigorodov猜测的Log4jConfigurator有关。但是log4j已配置,但对于docx4j来说不太好! 我在网上搜索了logj.xml文件,并尝试了一些

以下是它是如何完成的:

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


由于某种原因,当我进行干净的构建时,log4j.xml被覆盖。确保您的logj4.xml在清理后立即可用。

另一种可能是应用程序使用的库依赖于较新的JRE版本,但您安装的JRE(OS path环境中的java.exe)是较旧的版本。

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

必须还有一个“由以下原因引起的:”日志消息告诉真正的问题。是的,有。StackOverflow不允许我出于某种原因粘贴所有这些。有一个ExceptionInInitializeError(用于org.docx4j.openpackaging.parts)和一个NullPointerException(对于org.docx4j.utils.Log4jConfigurator)。它可能是最后一个。我不知道。因此,错误在Log4jConfigurator中-您必须正确配置它。它在从eclipse运行时配置正确,在执行jar时不起作用。必须还有一个“原因”:告诉真正问题的日志消息。是的,确实存在。StackOverflow不允许我出于某种原因粘贴所有这些。存在ExceptionInInitializeError(对于org.docx4j.openpackaging.parts)和NullPointerException(对于org.docx4j.utils.Log4jConfigurator)。这可能是最后一个。我不知道。所以错误在Log4jConfigurator中-您必须正确配置它。它在从eclipse运行时配置正确,在执行jar时不会工作。亲爱的Luhar,感谢您的响应!
com.lesswire.wita
是我的包,它包含上面的行。我想如果这是类路径问题,那么t它不能使用其他外部lib。但是,我在Project Properties->Java Build Path->Libraries及其fine中再次进行了检查。好的,参考上面的其他注释,当您在Eclipse之外运行应用程序时,是否可以检查log4j jar是否在您的类路径上。您好,我面临同样的问题,我已经更新了清单文件和类路径,但它不起作用。你能帮我吗?亲爱的Luhar,谢谢你的回复!
com.lesswire.wita
是我的包,它包含上面的行。我想如果它是一个类路径问题,它不能同时使用其他外部lib。但是,我再次检查了项目属性->Java构建路径->库,它很好。好,使用r参考上面的其他注释,当您在Eclipse之外运行应用程序时,您是否可以检查log4j jar是否在您的类路径上。您好,我面临相同的问题,我已经更新了清单文件和类路径,但它不起作用。您能帮我吗?您好,我面临相同的问题。在从应用程序运行jar时获取InvocationTargetError。我是new到Eclipse,我在任何地方都找不到log4j.xml文件。如果您能查看它,那将是非常感谢的。谢谢,我也面临同样的问题。从应用程序运行jar时获取InvocationTargetError。我是Eclipse新手,在任何地方都找不到log4j.xml文件。如果您能查看它,那将是非常感谢的。谢谢