【发布时间】:2014-02-25 05:30:12
【问题描述】:
我正在使用带有 servlet 的模板 Spring Boot 应用程序。当我将最新的 Jersey(用于 jax-rs)添加到应用程序,然后将 Groovy 框架添加到应用程序(仅用于测试)时,我开始在 IntelliJ 中运行应用程序时遇到问题。
Groovy 类路径上的一些库似乎与来自 Jersey 的库(servlet-api 和 ASM)发生冲突,但我还不能 100% 确定这是问题所在。确保 IntelliJ 构建的类路径与 maven 不同
似乎与spring-boot maven插件所做的技巧有关,但这只是一个怀疑。通过java -jar 运行失败,而通过mvn spring-boot:run 运行有效(从命令行以及从IntelliJ)。
我得到了这个例外:
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
【问题讨论】:
-
这是一个完全通用的例外。您需要发布堆栈跟踪(实际上是来自应用程序的堆栈跟踪,而不是容器,在正常情况下会单独打印出来)。更好地分享代码,这样我们就可以看到你做了什么。您可能可以检查 IDE 中的依赖项(至少 Eclipse 在这方面非常出色),看看是否有任何问题。
-
我已经这样做了,但它是一个移动的目标。首先是 ASM 引起了麻烦,然后是 servlet api 附带 groovy 等等……每次异常都不同,我唯一能采取的措施是从 groovy 运行时 lib 文件夹中删除一个库。
-
我非常强烈地不推荐使用 groovy 发行版(带有 servlet jar 和其他东西)来构建或运行您的应用程序。使用依赖管理系统来控制依赖关系要好得多。只需使用 maven 构建项目并运行它。
-
谢谢。这也是我采取的方法,希望有人解决了这个问题。
标签: groovy intellij-idea jersey jax-rs spring-boot