Воспроизводит фреймворк и Java8

#spring #playframework #java-8

#spring #игровой фреймворк #java-8

Вопрос:

У меня есть один проект Java 8, и этот проект зависит от Play Web app. Теперь всякий раз, когда я пытаюсь создать экземпляр classes rom Java 8 project в Play 2.2.3 web app, он выдает следующую ошибку:

 play.PlayExceptions$CompilationException: Compilation error[error: cannot access MongoOperations]
    at play.PlayReloader$anon$1$anonfun$reload$2$anonfun$apply$14$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
    at play.PlayReloader$anon$1$anonfun$reload$2$anonfun$apply$14$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
 

Как позволить play компилировать код с Java 8, когда я говорю «Воспроизвести «запустить 8080»? Почему play не может получить доступ к классу в проекте Java 8?

К вашему сведению: мой JAVA_HOME указывает на JAVA 8.

Вот как выглядит мой build.sbt. Обратите внимание, что «агрегатор контента» — это мой локальный артефакт, установленный в моем локальном репозитории maven.

 name := "web"

version := "1.0-SNAPSHOT"

resolvers  = "Maven central" at "http://repo1.maven.org/maven2"

libraryDependencies   = Seq(
  javaJdbc,
  javaEbean,
  cache,
  "de.undercouch" % "bson4jackson" % "2.1.0" force(),
  "com.fasterxml.jackson.core" % "jackson-databind" % "2.1.0" force(),
  "com.fasterxml.jackson.core" % "jackson-annotations" % "2.1.0" force(),
  "com.fasterxml.jackson.core" % "jackson-core" % "2.1.0" force(),
  "org.mongodb" % "mongo-java-driver" % "2.11.3",
  "com.techr" % "content-aggregator" % "0.0.1-SNAPSHOT",
  "org.jongo" % "jongo" % "1.0",
  "uk.co.panaxiom" %% "play-jongo" % "0.6.0-jongo1.0"
)     

play.Project.playJavaSettings
 

В проекте ‘content-aggregator’ (Java 8) я использую Spring и ввел компоненты путем автоматического подключения.
MongoOperations автоматически подключается к одному из классов, и play кричит об этом.
SpringMongoConfig.java это класс из этого проекта, который помечен как аннотация @configuration.
Теперь в проекте Play я создал класс конфигурации, который импортирует класс конфигурации агрегатора контента.

 @Configuration
@Import(SpringMongoConfig.class)
public class SpringConfig  {

}
 

Комментарии:

1. Можете ли вы вставить соответствующие разделы вашего build.sbt ?

2. @DonovanMuller обновил вопрос с дополнительной информацией.

3. MongoOperations кажется, из проекта Spring Data MongoDB . Ни одна из ваших зависимостей, похоже, не использует этот проект как транзитивную зависимость (я не могу проверить ваш content-aggregator проект). Поэтому либо добавьте явную зависимость spring-data-mongodb , либо убедитесь, что ваш content-aggregator проект правильно настроен для использования в spring-data-mongodb качестве транзитивной зависимости.

4. Похоже, в этом и была проблема. Я добавил зависимость в проект воспроизведения извне, и он больше не выдает ошибок. Однако я ожидал, что когда я добавлю Content-aggregator в качестве зависимости в Play project, это также должно привести к снижению транзитивных зависимостей, очевидно, что этого не происходит. Что еще я должен сказать maven, чтобы он включал все транзитивные зависимости в Play project, и я уверен, что это правильно вместо добавления зависимости spring-data-mongo для воспроизведения проекта извне.

5. Согласен, это было бы лучшим решением. Какая область находится spring-data-mongodb в pom.xml вашем content-aggregator проекте?