#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
проекте?