BIRTjava.lang.NoClassDefFoundError: org/eclipse/jetty/util/Decorator
Posted
技术标签:
【中文标题】BIRTjava.lang.NoClassDefFoundError: org/eclipse/jetty/util/Decorator【英文标题】: 【发布时间】:2018-07-18 15:50:52 【问题描述】:我安装了 64 位 Oxygen.2 并通过“更新软件”安装了 BIRT Framework。 尝试从 BIRT 的 GUI 呈现报告(以任何格式)时,我收到以下错误:
java.lang.NoClassDefFoundError: org/eclipse/jetty/util/Decorator
at org.eclipse.birt.report.viewer.utilities.ViewerWebApp.start(ViewerWebApp.java:40)
at org.eclipse.birt.report.viewer.utilities.AppServerWrapper.startJettyServer(AppServerWrapper.java:256)
at org.eclipse.birt.report.viewer.utilities.AppServerWrapper.start(AppServerWrapper.java:155)
at org.eclipse.birt.report.viewer.utilities.WebappAccessor.start(WebappAccessor.java:72)
at org.eclipse.birt.report.viewer.utilities.WebViewer.startWebApp(WebViewer.java:827)
at org.eclipse.birt.report.viewer.utilities.WebViewer.display(WebViewer.java:1078)
at org.eclipse.birt.report.viewer.utilities.WebViewer.display(WebViewer.java:1073)
at org.eclipse.birt.report.designer.ui.actions.PreviewSupport.preview(PreviewSupport.java:402)
at org.eclipse.birt.report.designer.ui.actions.PreviewSupport$3.widgetSelected(PreviewSupport.java:245)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4428)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4238)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3817)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1499)<br>
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.Decorator cannot be found by org.eclipse.jetty.servlet_9.4.5.v20170502**
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 36 more
有人知道如何解决这个问题吗?
【问题讨论】:
org.eclipse.jetty.util.Decorator
是jetty-util-<version>.jar
的一部分。为什么它试图在jetty-servlet-<version>.jar
中找到它?
@JoakimErdfelt,你说得很好。我实际上不知道为什么它试图在 jetty-servlet-.jar 中找到它,我想无论是谁编写了它,他们都输入了错误的参考。您是否有机会知道是否可以在不重新编译的情况下更改为正确的指针等。这些引用是编码然后编译还是保存在某个外部 .xml 文件中?
【参考方案1】:
2019 年 6 月 23 日更新 - 刚刚添加了 Eclipse Photon 的说明
https://bugs.eclipse.org/bugs/show_bug.cgi?id=517662#c29
更新 04/04/18 - 在下面的第一个错误中报告了解决问题的解决方法。将附加到 bug 的插件文件复制到 Eclipse 安装的“dropins”文件夹并重新启动。它对我有用。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=517662
【讨论】:
对我不起作用。我在 dropin 文件夹中添加了所有 jar。什么也没发生。有什么原因吗? 你用的是什么版本?错误 517662 中提供的罐子仅适用于氧气。 上述建议的解决方案是否有效?我尝试了上述步骤,但没有成功...@NeimarVolpini,您介意提供逐步说明吗? @JavaFan,你在尝试哪个版本的 BIRT? @NeimarVolpini,我正在使用 Eclipse 2019-03 和 BIRT 4.7.0v201706222054 我尝试了 Neon3:有效 我尝试了 birt-all-in-one(如其中一篇文章中所建议的):有效。但我想解决这个错误,以便我可以继续使用最新版本的 Eclipse。【参考方案2】:与安装程序的集成似乎尚未准备好。
目前(BIRT 4.8.0),最简单的解决方案是从https://download.eclipse.org/birt/downloads/下载多合一选项
在撰写本文时,此发行版包括 Eclipse Photon 并具有呈现报告所需的所有插件。
如果您必须使用 Oxygen,请访问旧版本的链接 https://download.eclipse.org/birt/downloads/build_list.php。我只测试了 4.8.0,所以我不知道哪个旧版本运行良好。
【讨论】:
【参考方案3】:我在使用 Eclipse 4.11 时遇到此错误,该错误是从 eclipse.org 的“Eclipse for Java 和 Report Developers 下载链接”安装的。令人困惑的是,这个版本的 Eclipse 似乎附带了 BIRT 的 4.7.0 版本,该版本已有几年的历史(最新的是 4.8.0)。
上面由 Krauss 链接的 BIRT 页面有一个“一体式”下载链接,但它是带有 BIRT 4.6.0 的 Eclipse Neon (4.6)!不过好消息是这个版本不存在这个错误,至少对我来说是这样。
我被整个情况彻底搞糊涂了
TL;DR 下载并使用这个旧版本:
https://www.eclipse.org/downloads/packages/release/neon/r/eclipse-ide-java-and-report-developers
【讨论】:
以上是关于BIRTjava.lang.NoClassDefFoundError: org/eclipse/jetty/util/Decorator的主要内容,如果未能解决你的问题,请参考以下文章