未找到Play Framework Scala环境变量

未找到Play Framework Scala环境变量,scala,intellij-idea,playframework-2.0,environment-variables,Scala,Intellij Idea,Playframework 2.0,Environment Variables,副食品 我正在尝试在Play2.4 Scala中为我的项目设置环境变量。 我在Intellij的运行配置中设置了变量 恼人的是Scala似乎没有看到这些 我不断收到未为我使用的env变量键指定的配置错误 启动应用程序时,控制台中会显示: "C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -

副食品

我正在尝试在Play2.4 Scala中为我的项目设置环境变量。 我在Intellij的运行配置中设置了变量

恼人的是Scala似乎没有看到这些

我不断收到未为我使用的env变量键指定的配置错误

启动应用程序时,控制台中会显示:

"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\Haito\AppData\Local\Temp\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\Haito\.IntelliJIdea14\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run
 "C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\Haito\AppData\Local\Temp\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\Haito\.IntelliJIdea14\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run
和配置文件:

mongodb.uri = ${?DB_URI}

play.mailer {
  host=${?MAIL_HOST}
  port=${?MAIL_PORT}
  ssl=false
  tls=true
  user=${?MAIL_USERNAME}
  password=${?MAIL_PASSWD}
  debug=false
  mock=false
}
我不断地得到这些:

Missing configuration key 'mongodb.db'!
当然,我的问题不是我的mongo司机。我的问题是配置中没有环境变量。还使用环境变量进行配置的邮件程序。当我粘贴除
${?DB_URI}
之外的实际URI时,它会工作

建造:

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"

resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

libraryDependencies ++= Seq(
  "org.reactivemongo" %% "play2-reactivemongo" % "0.11.2.play24"
)

libraryDependencies ++= Seq(
  "com.typesafe.play" %% "play-mailer" % "3.0.1"
)
启动应用程序时,控制台中会显示:

"C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\Haito\AppData\Local\Temp\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\Haito\.IntelliJIdea14\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run
 "C:\Program Files\Java\jdk1.8.0_25\bin\java" -Dfile.encoding=UTF8 -DMAIL_PORT=587 -DDB_URI=mongodb://uri -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\Haito\AppData\Local\Temp\sbt-global-plugin7stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\Haito\.IntelliJIdea14\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot "project root" ~run
-D
不设置环境变量,而是设置。您还应该能够从运行配置中设置环境变量,但对话框的另一部分除外

此外,Play的文档中根本没有提到它关注环境变量:

默认设置是从类路径上找到的任何reference.conf文件加载的。大多数Play JAR都包含一个带有默认设置的reference.conf文件。application.conf中的设置将覆盖reference.conf文件中的设置

还可以使用系统属性设置配置。系统属性覆盖application.conf设置

也就是说,传递
-Dmongodb.uri=…
应该可以工作

后来它确实说

对于在配置树中找不到的替换,实现可以通过查看系统环境变量或其他外部配置源来尝试解决它们。(有关环境变量的更多详细信息,请参见后面的部分。)

但这只是HOCON自述的一句话

您需要查看加载配置的代码,以检查它是否使用了包含环境变量的方法之一。

这是一个示例。在播放运行配置中设置“环境变量”字段将设置系统属性,而不是环境变量

如果您在
.bash\u profile
之类的地方手动配置环境变量,那么您当然可以在应用程序中使用它们。conf类似于:

db.default.url = ${?DB_URL}

如果您的mongodb url包含
mongodb://xxxxxxxxxx?key=value
然后intellij将以静默方式删除该env变量

您的配置中确实缺少
mongodb.db
。将其设置为服务器上相应数据库的名称,如
mongodb.db=test
该信息以uri编码。@您好,您是否尝试将其与URL分开?可能驱动程序需要在单独的选项中进行配置,所以如果您指定用于mongo db的驱动程序就更好了。例如,来自
build.sbt
fileSure的依赖关系,我编辑了我的主要帖子。但请承认我的问题不是mongodriver的错误。我的问题是程序没有看到环境变量。当我手动输入uri时,一切正常。这解释了很多。但我用了“环境变量”框,看起来应该可以用了。您可以尝试通过调用sys.env和System.getenv来检查程序是否看到这些环境变量。不幸的是,sys.env和System.getenv没有返回我在runconfig中创建的变量。另外,根据Play2文档,当我执行-Dconfig.field=smth时,它应该覆盖它,但它没有。您尝试过
-Dmongodb.uri
?如果是这样,很遗憾,我没有更多的想法。