【问题标题】:How to View Classpath While Debugging in Eclipse在 Eclipse 中调试时如何查看类路径
【发布时间】:2012-12-20 12:33:52
【问题描述】:

我正在尝试对我在 Eclipse 中编写的基于 GWT 的应用程序进行故障排除。它目前在后端使用 Spring Framework 3.1.1 和 Hibernate 4.1.6。我目前遇到了可怕的“javax.validation.ValidationException:无法找到默认提供程序”的问题,这似乎困扰了很多人,但由不同的问题引起。我已经尝试了使用不同版本的 JSR 303 实现的各种解决方案(例如 Hibernate Validator 的不同版本),但似乎没有什么不同。

调试后,我明白了原因。一旦执行到 javax.validation.Validation.getValidationProviders():317(在 validation-api-1.0.0.GA 中),应用程序(在 Eclipse 内部 Jetty 服务器上运行)尝试读取 META-INF/services/javax .validation.spi.ValidationProvider 资源来自类路径并返回为空。我绝对确定我放置的不同验证器实现(例如 hibernate-validator-4.3.0.Final.jar)具有该资源并且它确实包含一个值(例如 org.hibernate.validator.HibernateValidator),但不是出现在有问题的类加载器中。我在类路径中包含 JAR 的方法是将其添加到项目的构建路径中,这似乎是在我执行应用程序时将其添加到 Jetty 运行时。

我的问题是:有没有办法在某个类加载器可见的 Eclipse 调试模式下查看类路径?其次,有谁知道为什么 Hibernate Validator 的资源不是首先在 Validation 使用的类加载器中?

【问题讨论】:

    标签: eclipse debugging gwt classpath classloader


    【解决方案1】:

    webapp 类路径由目录 WEB-INF/classes 和 WEB-INF/lib 中的所有 jar 组成。如果您希望 jar 在运行时可用,则不能将其添加到构建路径,而是添加到 WEB-INF/lib。

    在 Eclipse 的 WebContent/WEB-INF/lib 中放置一个 jar 将使其自动成为 web 应用程序的构建路径的一部分,并在运行时可用。

    【讨论】:

    • 只是一个小提示:在 GWT DevMode 中,DevMode 的运行时类路径(Eclipse 从项目的构建路径初始化)用作后备但随后在“开发模式”中打印警告查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多