scala - 无法部署 Scala Web 应用程序
问题描述
我正在尝试部署一个使用 Play 框架和 Scala 构建的简单 Web 应用程序。应用程序工作正常,当我使用sbt run
命令运行应用程序时,但是,当我尝试在本地服务器中部署应用程序时,使用sbt dist
命令,我收到以下消息
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/D:/Scala/SomeDomain/SomeProject/target/universal/SomeProject-1.0-SNAPSHOT/lib/com.google.inject.guice-4.2.2.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Oops, cannot start the server.
com.google.inject.CreationException: Unable to create injector, see the following errors:
1) Error injecting constructor, java.io.IOException: Dictionary directory does not exist: D:\Scala\SomeDomain\SomeProject\target\universal\SomeProject-1.0-SNAPSHOT\bin\dict
at initializer.ServiceInitializer.<init>(ServiceInitializer.scala:11)
at initializer.ApplicationInitializer.configure(ApplicationInitializer.scala:12) (via modules: com.google.inject.util.Modules$OverrideModule -> initializer.ApplicationInitializer)
while locating initializer.ServiceInitializer
我使用的是 Windows,我提取了生成的文件并从目录中.zip
执行了该文件。.bat
/bin
构建.sbt
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala, LauncherJarPlugin)
scalaVersion := "2.12.10"
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test
libraryDependencies += "postgresql" % "postgresql" % "9.1-901-1.jdbc4"
插件.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.0")
addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.11.0")
解决方案
似乎您的应用程序的某些组件需要一个目录存在:
java.io.IOException: Dictionary directory does not exist: D:\Scala\SomeDomain\SomeProject\target\universal\SomeProject-1.0-SNAPSHOT\bin\dict
确保创建目录,或将丢失的文件添加到您的 dist。
推荐阅读
- reactjs - 如何使用 React 将 QR 码放入 PDF?
- ruby-on-rails - 来自url的带有查询的rails 6上的Json响应
- python - 根据另一个数据框数据生成列数据
- arrays - Get position of hash in array of hashes
- r - 如何在同一窗口中显示两个直方图,但在 R 中显示不同的图?
- python - 为什么 `|=` 似乎会改变一个 `set` 而长格式没有?
- go - nginx proxy_pass on / 使用 go app 给出 404
- android - TWA:尝试在域之间进行无缝导航但没有运气
- python - 箭袋箭头缩放的解释
- css - 媒体查询正在 Inspector 上工作,但不在现场