在什么情况下,Java项目的Classpath将与其Buildpath不同?

时间:2014-10-23 20:58:41

标签: java eclipse classpath buildpath

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

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

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

上述理解准确吗?你能给我一个场景,其中classpath将有比buildpath中更多的类吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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