我实现了一个Scalatra servlet,现在想要创建一个可执行jar,就像本教程中描述的那样:http://www.scalatra.org/2.2/guides/deployment/standalone.html
我使用IntelliJ IDEA和Scala插件进行开发,并使用sbt来构建和运行我的servlet(我使用sbt-idea来生成项目文件).我的问题是当我尝试编译项目时,无法找到教程中JettyLauncher使用的jetty包.
更新:使用Matt的答案,我能够编译并运行JettyLauncher.但是,我仍然遇到sbt-assembly问题(https://github.com/sbt/sbt-assembly).我按照自述文件中的说明进行操作,但在尝试执行汇编任务时出现以下错误:
[error] Not a valid command: assembly
[error] No such setting/task
[error] assembly
[error] ^
Run Code Online (Sandbox Code Playgroud)
更新2:感谢Matt我现在有一个正在运行的build.scala,我可以使用汇编任务生成一个可执行jar.但是,sbt-assembly不会将/ src/main/webapp的内容添加到jar中.我使用此文件夹来存储我的HTML,CSS和JavaScript文件.如果Scalatra无法匹配路由,它将提供这些文件,这些文件在使用container:start运行servlet时有效.另外,我在/ src/main/webapp/WEB-INF中存储了服务器所需的一些文件.这些文件也没有添加到jar中.
我的build.scala看起来像这样:
import sbt._
import Keys._
import org.scalatra.sbt._
import org.scalatra.sbt.PluginKeys._
import com.mojolly.scalate.ScalatePlugin._
import ScalateKeys._
import sbtassembly.Plugin._
import AssemblyKeys._
object SketchlinkBuild extends Build {
val Organization = "de.foobar"
val Name = "Foobar"
val Version = "0.1"
val ScalaVersion = "2.10.0"
val ScalatraVersion = "2.2.0"
lazy val project = Project (
"foobar",
file("."),
settings = Defaults.defaultSettings …Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery将一个元素添加到嵌入式SVG中,如下所示:
var rect = SVG('rect');
$(rect).attr( { x: left,
y: top,
width: right - left,
height: bottom - top,
style: style } );
$(parentElement).append(rect);
Run Code Online (Sandbox Code Playgroud)
parentElement可以是例如$('g:first',svgRoot),其中svgRoot是指嵌入的SVG元素.
function SVG(elementName) {
return document.createElementNS('http://www.w3.org/2000/svg', elementName);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,新的矩形显示在浏览器中并添加到DOM:

但是,删除此矩形失败.它仍然显示在浏览器中并出现在DOM中:
$(rect).remove();
Run Code Online (Sandbox Code Playgroud)
我也试过了
rect.parentNode.removeChild(rect);
Run Code Online (Sandbox Code Playgroud)
这导致错误消息"Uncaught TypeError:无法调用方法'removeChild'为null".
你知道我怎么解决这个问题吗?在我的项目中不可能使用jQuery SVG或其他插件/框架.
我在项目中使用taphold事件,需要用户点击的点的坐标.不幸的是,event.clientX和event.clientY是未定义的(cp.我的例子在这里).是否有可能使这些坐标与onclick事件类似?
提前致谢!