我正在Eclipse中的maven-spring项目中声明以下依赖项:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.0.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>
据我了解,org.springframework.context中的类仅在运行时可用,而在编译时不可用。但是我可以在代码中从上述包中导入类,而没有任何编译错误(在Eclipse中)。这是我的代码:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloWorld {
public static void main(String args[])
{
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
}
}
在这里,我的基本问题是上述代码是如何工作的。当我尝试使用ApplicationContext时会出现编译时错误,因为我在运行时范围中包含了“ spring-context”构件?我的月食在这里做些招吗?我在这里想念什么?谢谢
最佳答案
在运行时可能需要编译时间,也可能不需要。如果是编译作用域的依赖项,则jar将被复制到您的类路径中,因此将在运行时使用。另一方面,您可以使用某些依赖项编译代码,并且在运行时可以在运行时范围内使用该依赖项的其他实现。
关于java - 为什么运行时依赖项类在编译时可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25060982/