2013-08-27 3 views
0

독립 실행 형 병을 만들기 위해 scalatra 설명서 및 sbt-assembly 플러그인을 사용하고 있습니다. 내 로컬 컴퓨터 (OpenJdk 1.7.0에서는 Debian Wheezy)에서 작동하지만 동일한 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") 
    ) 
    
  4. 정말 느린의 .jar에서 내 경험 부두로드 웹 리소스에

, 당신은 파일 시스템의 폴더에 넣어 더 좋을 수 있도록. 옵션 2와 3 모두 파일 시스템에서 자원을로드합니다.

+0

Jar로드가 실제로 느리다. 나는 Scalatra의 Mustache 템플릿으로 10 배의 반응 시간을 보였다. –

관련 문제