Java 找不到eclipse jetty插件跨源支持类

Java 找不到eclipse jetty插件跨源支持类,java,eclipse,eclipse-plugin,jetty,cors,Java,Eclipse,Eclipse Plugin,Jetty,Cors,我正在尝试为我的web应用程序使用跨源筛选器支持。我正在使用eclipse jetty插件从eclipse中调试它。当我使用mvnjetty:run通过控制台运行这个类时,我总是得到正确的响应。但当我使用JettyEclipse插件运行它时,我得到了类NotFoundException java.lang.ClassNotFoundException: org.eclipse.jetty.servlets.CrossOriginFilter at java.net.URLClas

我正在尝试为我的web应用程序使用跨源筛选器支持。我正在使用eclipse jetty插件从eclipse中调试它。当我使用mvnjetty:run通过控制台运行这个类时,我总是得到正确的响应。但当我使用JettyEclipse插件运行它时,我得到了类NotFoundException

java.lang.ClassNotFoundException: org.eclipse.jetty.servlets.CrossOriginFilter
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:421)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:383)
        at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100)
我的pom.xml中有以下依赖项:

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>9.2.5.v20141112</version>
</dependency>

org.eclipse.jetty
防波堤小艇
9.2.5.v20141112
当我在eclipse中检查jetty项目的类路径配置时,我看到这个依赖项以maven依赖项的形式出现。我仍然不知道为什么jetty插件不能找到org.eclipse.jetty.servlets.CrossOriginFilter作为类路径的一部分。请帮我做这个

编辑:


看起来不仅仅是CORS的。甚至web.xml中存在的其他类也会为找不到的类抛出错误。我检查了该调试配置的jetty类路径,并能够在那里找到这些JAR。不确定发生这种情况的原因。

这不能成为webapps
WEB-INF/lib
目录的一部分(不支持这种方式,因为它无法访问所需的内部服务器组件)

改为在
${jetty.base}/start.ini
中启用
servlets
模块

--module=servlets

虽然我不确定以下是可能的最佳解决方案,但它确实有效:

首先我补充说

    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlets</artifactId>
        <version>${jetty-maven.version}</version>
        <scope>test</scope>
    </dependency>

org.eclipse.jetty
防波堤小艇
${jetty maven.version}
测试
注意,我在这里使用了
test
分数,以避免将仅用于Maven Jetty插件的依赖项泄漏到生产工件中。 为了让Maven Jetty插件能够使用此依赖项(因为默认情况下它不使用测试范围),您需要启用


true
在插件的
配置
部分

你好,Joakim,谢谢你的回复。因为我使用的是eclipse jetty插件,所以我不确定在哪里可以找到start.ini。我试图寻找它,但没有看到它。相反,我找到了EclipseJetty插件配置xml文件。我开始在eclipse调试配置中手动添加JAR作为jetty插件的依赖项。我可以看到这些JAR作为额外的类路径条目添加到eclipse jetty配置xml中。现在这个问题已经解决了。但问题是,我可能需要一个接一个地添加项目的所有依赖JAR来解决所有错误,我想你需要和开发你正在使用的插件的第三方谈谈。谢谢Joakim的回复。我通过在插件配置中启用Include-other-dependencies(不包括作用域)修复了这个问题。这导致在运行jetty插件时添加了所有依赖项。@JoakimErdfelt不是Eclipse jetty项目的一部分吗?谢谢你的帮助input@geoand您的语句“EclipseJettyPlugin”指的是EclipseIDE的Jetty插件(这还包括WTP支持)。我们不维护基于EclipseIDE的插件。jetty maven插件不是“EclipseJetty插件”,它是为maven本身设计的,是的,我们确实维护和支持它。