带有 Web 工具平台的 Eclipse Juno - 本地主机上的 HTTP 预览抛出 NoClassDefFoundError

Posted

技术标签:

【中文标题】带有 Web 工具平台的 Eclipse Juno - 本地主机上的 HTTP 预览抛出 NoClassDefFoundError【英文标题】:Eclipse Juno with Web Tools Platform - HTTP Preview at localhost throws NoClassDefFoundError 【发布时间】:2013-04-09 12:04:10 【问题描述】:

在尝试使用 Web 工具平台在 Eclipse Juno 中启动 HTTP 预览时,我不断收到 NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext

重现步骤:

    下载、提取并启动 Eclipse Juno 通过http://download.eclipse.org/releases/juno的“安装新软件...”安装“Eclipse Web Developer Tools” 创建新的“静态 Web 项目” 在新项目中创建 html 文件 右键项目 -> 运行方式 -> 在服务器上运行 -> 在 localhost 上的 HTTP 预览 -> 完成

此时,无论我做什么,我都会不断收到 NoClassDefFoundError。

我已经尝试过的:

尝试使用 32/64 位 Eclipse 已在 Windows XP、Windows 7 上试用过 尝试安装“Web、XML、Java EE 和 OSGi 企业开发”中的所有工具 尝试从 Eclipse Marketplace 安装“Eclipse Jetty”和“Run-Jetty-Run” 尝试了不同的 Eclipse 包:“Eclipse IDE for Java Developers”、“Eclipse Classic”

我发现的类似问题:

NoClassDefFoundError - Eclipse - Apache HTTPClient No HTTP Preview server for Eclipse Juno in Ubuntu 12.04

我的主要环境是:

Windows 8 64 位 Eclipse Juno (4.2.2) 64 位 Web 工具平台 3.4.2 JRE 7

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.webapp.WebAppContext at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 6 more

【问题讨论】:

【参考方案1】:

您可以创建补丁并使其在以下四个阶段为您工作:

<strong>Phase 1</strong>: Create a plug-in project for the plug-in you need to patch.

    创建一个新工作区(推荐)或打开一个现有工作区。 选择File -> Import 展开Plug-in Development,选择Plug-ins and Fragments,然后点击NextImport As 部分中,选择Projects with source folders 然后点击Next。 输入(或复制和粘贴,无引号) org.eclipse.wst.server.preview.adapter 进入顶部的 ID 字段和 点击Add All。这应该会将这个插件移动到右侧窗格中。 点击Finish导入“org.eclipse.wst.server.preview.adapter” 插件源到项目中。 展开项目的根目录并确保它包含一个名为 “源”。如果您有“WST 服务器”,您只会获得“src”文件夹 适配器插件开发人员资源”已安装。

<strong>Phase 2</strong>: Apply the changes needed to update the plug-in. Since there is a bug with a patch attached that can be used to apply the changes, the following steps will take advantage of that.

    在浏览器中打开Bug 402848。 点击Patch v1.0 for 3.4.2p附件链接打开补丁。 从第二次出现以--- 开头的行开始, 通过文本末尾选择这一行并将其复制到剪贴板。这包含对 PreviewLaunchConfigurationDelegate.java 文件的更改,该文件是修复所在 需要。您不想要补丁的上部,因为这会改变插件的版本,这会使事情变得复杂。 返回 Eclipse,右键单击“org.eclipse.wst.server.preview.adapter”项目。选择Team,然后点击Apply Patch。 选择剪贴板并点击Next。 确保“org.eclipse.wst.server.preview.adapter”项目是 选中,然后点击Next。 将Ignore leading path name segments 设置为 3。“补丁 内容”窗口应更改为有一个蓝色的左箭头 而不是红色的 x 指示符。 点击Finish 应用更改。

<strong>Phase 3:</strong> Create the replacement jar. Due to the approach in Phase 1, the name of this jar will be identical to your current jar, which simplifies updating the Eclipse installation.

    在项目浏览器或其他导航器视图中右键单击org.eclipse.wst.server.preview.adapter 项目并选择Export 展开Plug-in Development,选择Deployable plug-ins and fragments,然后点击Next 单击“目标”选项卡中“目录”选项旁边的Browse 按钮,然后单击“确定”。这会将输出目录设置为与您的工作区相同。 点击Finish构建替换插件jar。会出现在 工作区根目录下的“插件”文件夹。

<strong>Phase 4:</strong> Replace the installed plug-in jar with the fixed version.

    如果 Eclipse 正在运行,请退出它。 在 Eclipse 安装的“plugins”文件夹下,移动或 重命名 org.eclipse.wst.server.preview.adapter_1.1.101.v20121107_1651.jar 如果你 不想用补丁版本覆盖它(在下面的步骤 3 中提到)。如果您有不同的版本,则表示您没有使用 Juno SR2,希望您安装了与您的版本匹配的“WST 服务器适配器插件开发人员资源”。 复制org.eclipse.wst.server.preview.adapter_1.1.101.v20121107_1651.jar 工作区下的“plugins”文件夹,并将其粘贴到 Eclipse 安装的“plugins”文件夹中。

您现在应该可以使用固定插件运行 Eclipse。由于修补后的 jar 具有相同的版本号,因此无需额外更改。

希望对你有帮助!

【讨论】:

【参考方案2】:

可能会在 6 月即将发布的 Kepler 版本中修复。

http://bugs.eclipse.org/402848

【讨论】:

等待新版本不是一个选项,但非常感谢这个链接。不幸的是,我无法应用给定的补丁,但至少我现在知道问题出在哪里。【参考方案3】:

谢谢你,

只需下载补丁即可;

http://download.eclipse.org/webtools/patches/drops/R3.4.2/P-3.4.2-20130506185528/patches32x-P-3.4.2-20130506185528.zip

那么;

复制文件到eclipse目录

【讨论】:

以上是关于带有 Web 工具平台的 Eclipse Juno - 本地主机上的 HTTP 预览抛出 NoClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

删除 Eclipse Juno 中的“快速访问”条目

为啥我第一次打开eclipse juno时总是出错?

Eclipse juno 中安装 JBoss Tools,集成Hibernate

无法使用 worklight 6.0.0.2014 插件在 juno 中安装 subeclipse 插件

Eclipse------新建文件时没有JSP File解决方法

Eclipse安装Maven插件