【问题标题】:@EnableZuulProxy doesnot work due to `HttpServletRequest` class not found由于找不到`HttpServletRequest`类,@EnableZuulProxy 不起作用
【发布时间】:2019-01-20 03:38:36
【问题描述】:

我正在为我的微服务编写启用Zuul 的 API 网关, 然而,在启动包含zuul 的微服务时,我收到了下面提到的错误

错误:原因:java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

经过多次搜索,我发现以下两种对我没有帮助的解决方案。所以我在这里

  1. 启用Apache tomcat facet。出于某种原因,Dynamic web module 3.0 禁用了此功能。
  2. 创建自定义dispatcher servlet。但是当我们使用 servlet 2.5 时,这个解决方案应该是可行的。

由于我使用的是从 https://spring.io 导入的 spring-boot 应用程序,所以它巩固了我使用的是 servlet 3.0

我的API网关pom.xml

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

我已使用 @EnableZuulProxy 注释我的 API 网关类。

说了这些,请您帮我解决上面突出显示的错误。

编辑:当我改变 1. spring-starter-parent1.5.3RELEASE 而不是最新的。 2. spring-cloud.versionFinchley.SR1Edgware.SR2。我一点问题都没有。

我猜这是最新的春天的东西?有什么想法!

【问题讨论】:

  • 可能是损坏的 JAR 下载。可以清除所有/.m2/repository 文件夹,或者尝试找到特定的jar,我个人会删除org.springframework 文件夹并运行mvn install 或可以运行mvn dependency:purge-local-repository
  • 你是如何启动应用程序的?从 IDE 还是命令行?
  • 来自 IDE 的@galovics
  • 用 maven 运行应用程序怎么样? mvn spring-boot:run

标签: java spring-boot microservices netflix-zuul


【解决方案1】:

我已尝试简化您的 pom,但没有遇到任何问题。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>

在放置这些依赖项后告诉我,它仍然无法正常工作。您能否也提供源代码的 githhb 链接

【讨论】:

  • 你用的是什么 spring-starter-parent 版本?
  • 1.5.3.RELEASE 和 2.0.0.RELEASE
  • 同一依赖项的多个版本可能存在问题?
  • 您的 pom.xml 中提到的依赖项很难找到。它显示错误,即在 Maven 构建时 jar 错误。
  • spring-cloud-starter-zuul/eureka 存在于 spring 1.5.3 中。它们与 spring 2.0.3 不兼容。正如我已经提到的,我的代码在 spring 1.5.3 中已经很好了。我猜 Spring 2.0.3 出现了问题。
猜你喜欢
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多