带有Web Tools Platform的Eclipse Juno - localhost上的HTTP预览会抛出NoClassDefFoundError

时间:2013-04-16 22:05:45

标签: eclipse jetty eclipse-juno eclipse-wtp web-development-server

尝试使用Web Tools Platform在Eclipse Juno中启动HTTP预览时,我不断获得NoClassDefFoundError: org/eclipse/jetty/webapp/WebAppContext

重现的步骤:

  1. 下载,摘录并启动Eclipse Juno
  2. 通过http://download.eclipse.org/releases/juno
  3. 中的“安装新软件...”安装“Eclipse Web Developer Tools”
  4. 创建新的“静态Web项目”
  5. 在新项目中创建HTML文件
  6. 右键单击Project - >以 - >运行在服务器上运行 - > localhost上的HTTP预览 - >完成
  7. 此时,无论我做什么,我都会收到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”

    我发现类似的问题:

    我的主要环境是:

    • Windows 8 64位
    • Eclipse Juno(4.2.2)64位
    • Web Tools Platform 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

3 个答案:

答案 0 :(得分:2)

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

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

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

    1. 在浏览器中打开Bug 402848
    2. 点击Patch v1.0 for 3.4.2p附件链接以打开修补程序。
    3. 从第二次出现以---开头的行开始, 在文本末尾选择此行并将其复制到剪贴板。这包含对PreviewLaunchConfigurationDelegate.java文件的更改,该文件是修复所在的位置 需要。你不希望补丁的上半部分会改变插件的版本,这会使事情变得复杂。
    4. 返回Eclipse,右键单击“org.eclipse.wst.server.preview.adapter”项目。选择Team,然后点击Apply Patch
    5. 选中“剪贴板”,然后点击Next
    6. 确保“org.eclipse.wst.server.preview.adapter”项目是 选中,然后点击Next
    7. Ignore leading path name segments设置为3.“修补程序 内容“窗口应该更改为有一个蓝色的左箭头 而不是红色x指标。
    8. 点击Finish以应用更改。
    9. Phase 3: 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.

      1. 在Project Explorer或其他导航器视图中右键单击org.eclipse.wst.server.preview.adapter项目,然后选择Export
      2. 展开Plug-in Development,选择Deployable plug-ins and fragments,然后点击Next
      3. 单击“目标”选项卡中“目录”选择旁边的Browse按钮,然后单击“确定”。这会将输出目录设置为与工作区相同。
      4. 单击Finish以构建替换插件jar。它会出现在 工作区根目录下的“plugins”文件夹。
      5. Phase 4: Replace the installed plug-in jar with the fixed version.

        1. 退出Eclipse,如果它正在运行。
        2. 在Eclipse安装的“plugins”文件夹下,移动或 如果你重命名 org.eclipse.wst.server.preview.adapter_1.1.101.v20121107_1651.jar 不想用修补版本覆盖它(在下面的步骤3中提到)。如果您有不同的版本,则表示您没有使用Juno SR2,并且希望您安装了与您的版本匹配的“WST服务器适配器插件开发人员资源”。
        3. 复制 org.eclipse.wst.server.preview.adapter_1.1.101.v20121107_1651.jar 工作区下的“plugins”文件夹,并将其粘贴到Eclipse安装的“plugins”文件夹中。
        4. 您应该能够使用固定插件运行Eclipse。由于修补后的jar具有相同的版本号,因此无需进行其他更改。

          希望它有所帮助!

答案 1 :(得分:0)

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

http://bugs.eclipse.org/402848

答案 2 :(得分:0)