Почему классы зависимости во время выполнения доступны во время компиляции?

1

Я работаю над проектом maven-spring в eclipse, где я объявил ниже зависимость:

<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" с областью исполнения? Мое затмение делает здесь какой-то трюк? Что мне здесь не хватает? благодаря

  • 2
    Вы пытались скомпилировать это в командной строке? Если он потерпит неудачу, это будет связано с тем, как eclipse строит путь сборки. Вы также можете проверить, используется ли это как транзитивная зависимость компиляции?
  • 1
    Если библиотека была загружена в репозиторий maven на вашем компьютере ранее, вы не получите ошибку при автозаполнении в IDE. Вы можете проверить свой репозиторий Maven и попробовать другую версию, такую как 3.1.1 или версию, которой нет в репозитории Maven.
Показать ещё 2 комментария
Теги:
maven
spring

1 ответ

0

Зависимость времени компиляции может потребоваться или не понадобиться во время выполнения. В случае зависимости от области компиляции, jar будет скопирован в ваш путь к классам и, следовательно, будет использоваться во время выполнения. С другой стороны, вы можете скомпилировать свой код с определенной зависимостью, и во время выполнения вы можете использовать некоторую другую реализацию этой зависимости с областью выполнения.

  • 0
    Я думаю, вы не поняли вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню