【问题标题】:In what scenario would Classpath of a java project will be different from its Buildpath?在什么情况下,java 项目的 Classpath 会与其 Buildpath 不同?
【发布时间】:2014-10-23 20:58:41
【问题描述】:

只是在Eclipse 中为我的Java 项目查看BuildpathClasspath。我注意到我项目的构建路径中包含的所有 jar 都自动包含在其类路径中。

Eclipse 这样做是有道理的。我的意思是,如果我需要在我的代码中实例化一个外部类,那么我需要这些类通过 buildpath 来编译代码。在运行时,我也需要将那些相同的类加载到 jvm 中。

然后看起来构建路径中包含的所有类都需要在类路径中。虽然我想不出项目的类路径与其 buildpath 不同的情况。

以上理解准确吗?您能否给我一个场景,其中类路径将具有比构建路径中的类更多的类?

【问题讨论】:

  • 假设您的项目依赖库 A,而 A 内部使用库 B,而 B 内部使用库 C。您需要 B 和 C 来构建应用程序吗?不,你需要他们来运行它吗?是的,因为 A 需要 B,B 需要 C。

标签: java eclipse classpath buildpath


【解决方案1】:

在很多情况下,类只在运行时才需要,而不是编译时。最典型的驱动程序之一是 JDBC 驱动程序;代码是针对 JDBC API 编写/编译的,但在运行时,驱动程序类必须在类路径上可用。还有许多其他示例,尤其是当您进入具有标准 API 和可以在运行时“注入”的不同实现的各种框架时。

【讨论】:

    【解决方案2】:

    一个非常常见的例子是实现某些 API 的类,例如 Servlet API。每个容器(Tomcat、Jetty、WebSphere)都提供 Web 应用程序通常一无所知的类,因为它只使用接口。

    更广泛地说,此模式用于服务提供者接口,以启用在运行时添加实现接口的插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 2018-05-17
      • 1970-01-01
      • 2018-08-27
      • 2011-09-17
      • 2011-03-27
      • 2014-06-13
      相关资源
      最近更新 更多