在runnable jar中找不到getTimeStamp(),但是在其他情况下找不到

时间:2011-05-13 08:34:09

标签: java exception jar

我在部署在eclipse中运行良好的应用程序时遇到了问题,但在创建可运行的jar时会产生以下错误(使用选项:将所需的库提取到生成的JAR中):

org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoSuchMethodError: org.apache.log4j.spi.LoggingEvent.getTimeStamp()J)
        at org.eclipse.swt.SWT.error(Unknown Source)
        at org.eclipse.swt.SWT.error(Unknown Source)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)

我正在使用log4j-1.2.16.jar,它包含在生成的jar中。

我不确定在哪里进行故障排除,我试图在其他包含的jar中找到org.apache.log4j.spi.LoggingEvent的其他(较旧的)实例,但到目前为止我没有找到任何。< / p>

2 个答案:

答案 0 :(得分:7)

它说,没有方法 org.apache.log4j.spi.LoggingEvent.getTimeStamp() 再次查找类路径上的类,您应该找到类 org.apache.log4j.spi.LoggingEvent 两次。一种没有方法的方法一。

答案 1 :(得分:1)

  

我正在使用log4j-1.2.16.jar,它包含在生成的jar中。

Java类加载器不是为了处理Jar中的Jar而设计的。可以将Jar的 resources (类等)放到另一个Jar中(我想在Eclipse中使用一个名为'FatJar'的工具),但这可能会破坏EULA。

在应用程序的运行时类路径中包含Jar的常用方法是添加一个清单文件,该文件指定Jar的相对路径。