2013-08-27 22 views
0

我正在使用scalatra文檔和sbt-assembly插件創建獨立的jar。它可以在我的本地機器(Debian Wheezy with OpenJdk 1.7.0)上運行,但在運行相同Jdk的遠程EC2機器(Ubuntu 12.04.2 LTS)上失敗。Scalatra無法在獨立部署時查找視圖

異常消息是:

org.fusesource.scalate.util.ResourceNotFoundException: Could not load resource: [index.ssp]; are you sure it's within [/home/abc/src/main/webapp]? 
    at org.fusesource.scalate.servlet.ServletResourceLoader.createNotFoundException(ServletResourceLoader.scala:79) 
    at org.fusesource.scalate.util.ResourceLoader$class.resourceOrFail(ResourceLoader.scala:55) 
    at org.fusesource.scalate.servlet.ServletResourceLoader.resourceOrFail(ServletResourceLoader.scala:37) 
    at org.fusesource.scalate.util.UriResource.delegate(Resource.scala:91) 
    at org.fusesource.scalate.util.DelegateResource.text(Resource.scala:216) 
    at org.fusesource.scalate.ssp.SspCodeGenerator.generate(SspCodeGenerator.scala:152) 
    at org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:750) 
    at org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:699) 
    at org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:419) 

它說,它無法找到該視圖,但完全相同的JAR文件工作我的本地機器上。

+0

的Scalatra的導說,我可以部署罐子http://www.scalatra.org/2.2/guides/deployment/standalone.html。我誤解了嗎? – user2668128

回答

2

您需要在嵌入式Jetty上設置正確的資源庫。這裏有三個選項:

  1. 重視資源.jar文件,由https://stackoverflow.com/a/17913254/1590415

    val rb = getClass.getClassLoader.getResource("webapp").toExternalForm 
    context.setResourceBase(rb) 
    
  2. 按照指示把資源文件夾中的文件系統上的

    val rb = "webapp" 
    context.setResourceBase(rb) 
    
  3. 使用scalatra-sbt插件,它有一個dist任務,該任務創建一個.zip分發。有關正在進行的項目,請參閱here。您可以通過在SBT提示符下鍵入dist來調用該任務。

    val myDistSettings = DistPlugin.distSettings ++ Seq(
        mainClass in Dist := Some("ScalatraLauncher"), 
        memSetting in Dist := "2g", 
        permGenSetting in Dist := "256m", 
        envExports in Dist := Seq("LC_CTYPE=en_US.UTF-8", "LC_ALL=en_US.utf-8"), 
        javaOptions in Dist ++= Seq("-Xss4m", "-Dfile.encoding=UTF-8") 
    ) 
    

以我的經驗碼頭裝載網絡資源從很慢一個.jar,所以你可能會更好把它們文件系統中的文件夾中。選項2和3都從文件系統加載資源。

+0

Jar的加載速度確實很慢,我在Scalatra上遇到了Mustache模板的10倍響應時間。 –