我使用Play Java seed创建了一个播放项目
sbt new playframework/play-java-seed.g8
具有以下选项:
name [play-java-seed]: name
organization [com.example]:
scala_version [2.12.4]:
play_version [2.6.15]:
sbt_version [1.0.4]:
在执行sbt run
之后,我收到了很多警告
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
[info] Loading settings from plugins.sbt,scaffold.sbt ...
[info] Loading project definition from E:\Play\name\project
[info] Updating {file:/E:/Play/name/project/}name-build...
[info] Done updating.
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn] * org.webjars:webjars-locator-core:0.33 is selected over 0.32
[warn] +- com.typesafe:npm_2.12:1.2.1 (depends on 0.32)
[warn] +- com.typesafe.sbt:sbt-web:1.4.3 (scalaVersion=2.12, sbtVersion=1.0) (depends on 0.32)
[warn] * org.codehaus.plexus:plexus-utils:3.0.17 is selected over {2.1, 1.5.5}
[warn] +- org.apache.maven:maven-settings:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-repository-metadata:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-aether-provider:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-model:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-core:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-artifact:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-settings-builder:3.2.2 (depends on 3.0.17)
[warn] +- org.apache.maven:maven-model-builder:3.2.2 (depends on 3.0.17)
[warn] +- org.sonatype.plexus:plexus-sec-dispatcher:1.3 (depends on 1.5.5)
[warn] +- org.eclipse.sisu:org.eclipse.sisu.plexus:0.0.0.M5 (depends on 2.1)
[warn] * com.google.guava:guava:23.0 is selected over {10.0.1, 16.0, 20.0}
[warn] +- io.methvin:directory-watcher:0.3.2 (depends on 23.0)
[warn] +- com.fasterxml.jackson.datatype:jackson-datatype-guava:2.8.8 (depends on 10.0.1)
[warn] +- org.eclipse.sisu:org.eclipse.sisu.plexus:0.0.0.M5 (depends on 10.0.1)
[warn] +- com.spotify:docker-client:8.9.0 (depends on 10.0.1)
[warn] Run 'evicted' to see detailed eviction warnings
[info] Loading settings from build.sbt ...
[info] Set current project to name (in build file:/E:/Play/name/)
[info] Updating {file:/E:/Play/name/}root...
[info] Done updating.
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn] * com.google.guava:guava:22.0 is selected over {19.0, 20.0}
[warn] +- com.typesafe.play:play_2.12:2.6.15 () (depends on 22.0)
[warn] +- org.reflections:reflections:0.9.11 (depends on 20.0)
[warn] +- com.google.inject:guice:4.1.0 (depends on 19.0)
[warn] * com.typesafe.akka:akka-stream_2.12:2.5.11 is selected over 2.4.20
[warn] +- com.typesafe.play:play-streams_2.12:2.6.15 () (depends on 2.5.11)
[warn] +- com.typesafe.akka:akka-http-core_2.12:10.0.13 () (depends on 2.4.20)
[warn] * com.typesafe.akka:akka-actor_2.12:2.5.11 is selected over 2.4.20
[warn] +- com.typesafe.play:play_2.12:2.6.15 () (depends on 2.5.11)
[warn] +- com.typesafe.akka:akka-stream_2.12:2.5.11 () (depends on 2.5.11)
[warn] +- com.typesafe.akka:akka-slf4j_2.12:2.5.11 () (depends on 2.5.11)
[warn] +- com.typesafe.akka:akka-parsing_2.12:10.0.13 () (depends on 2.4.20)
[warn] Run 'evicted' to see detailed eviction warnings
--- (Running the application, auto-reloading is enabled) ---
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Enter to stop and go back to the console...)
我的机器上安装了java 9.0.4和sbt 1.1.0。
提前感谢您的回答。
发布于 2018-06-03 02:16:32
对于这些逐出警告,Github issue处于打开状态。由于Play是一个成熟且被广泛使用的框架,因此忽略这些警告是非常安全的。有三种可能的选择:
在Play
dependencyOverrides
通过
就我个人而言,我会建议第一个选择。
这里有一点关于eviction warnings的信息。考虑以下警告:
[warn] * com.typesafe.akka:akka-stream_2.12:2.5.11 is selected over 2.4.20
[warn] +- com.typesafe.play:play-streams_2.12:2.6.15 () (depends on 2.5.11)
[warn] +- com.typesafe.akka:akka-http-core_2.12:10.0.13 () (depends on 2.4.20)
它指出play-streams
和akka-http-core
都依赖于akka-stream
,但它们依赖于它的不同版本。默认情况下,SBT通过选择更高的版本(即2.5.11
)来解决冲突。请注意,这使得akka-http-core
依赖于2.5.11
,尽管它只在2.4.20
上编译过,换句话说,它现在依赖于未来从未测试过的库。如果2.5.11
不是带有2.4.20
的compatible,那么这可能会在项目中引入错误。打个比方,假设你有一辆2001年生产的汽车,但你盲目地安装了2002年的发动机。这辆车现在的表现会像2001年那样吗?如果数千名司机一直驾驶这辆车没有任何问题,它可能是安全的。
https://stackoverflow.com/questions/50646948
复制相似问题