小编Lar*_*ann的帖子

SBT:从Jar中排除课程

我正在将一个遗留jar项目转换为SBT,并且由于奇怪的原因而不易解决,这个项目里面有" javax/servlet/Servlet.class ".所以我需要以某种方式从package-bin生成的jar文件中排除这个类.我该如何做到这一点?我希望排除使用通配符(即javax.*).

该SBT组件插件看起来像它的功能,将做到这一点,但我担心的是依靠SBT装配意味着我的JAR项目将无法在船型多模块项目(即工作,如果我把它作为一个战争文件的依赖然后需要告诉war项目在依赖的jar项目而不是package-bin上运行程序集 - 但我可能在这里弄错了).

scala sbt

14
推荐指数
1
解决办法
5541
查看次数

创建一个运行程序的新任务

我需要定义一个自定义任务来计算主类的名称,然后运行它.我在考虑这样的事情

customTask {
  mainClass = compute main class name based on env
  runMain(mainClass, jvm-args, fork=true)
}
Run Code Online (Sandbox Code Playgroud)

然后在SBT我将能够运行

sbt>自定义任务

这可以在SBT 11.2中完成吗?

scala sbt

8
推荐指数
1
解决办法
2150
查看次数

在不同端口上的Jetty中分离Web应用程序

我需要以下设置.

  • Jetty必须侦听端口80809090
  • 每个端口必须有自己独立的应用程序(即webapp18080上运行,webapp29090上运行).web应用程序只能在其指定端口上访问(即webapp2不能在端口8080上可用).

我已经成功地向etc/jetty.xml 添加了额外的连接器,因此它现在使用端口8080和9090.我还添加了额外的处理程序,因此它现在从多个目录(dir1/webapp1和dir2/webapp2)中获取webaps.

我的问题是:jetty将每个处理程序找到的所有webapps部署到每个连接器(即每个端口),因此webapp1webapp2都可以在端口80809090上访问.

我需要一种方法来确保handler1(处理dir1/webapp1)仅被指定为connector1(侦听端口8080),并且同样对于connector2仅在端口9090上拾取handler2(处理dir2/webapp2).

有没有办法实现这个?

java jetty

7
推荐指数
1
解决办法
1万
查看次数

编译后从类路径中删除条目

我有一个依赖于jar项目的遗留战争项目,jar项目需要在类路径中添加一些非托管jar 进行编译.但这些罐子不应该包装在战争中.所以我的问题是如何从fullClasspath中删除这些条目.以下内容不起作用:

val excludeFilter = "(servlet-api.jar)|(gwt-dev.jar)|(gwt-user.jar)"
val filteredCP = cp.flatMap({ entry =>
   val jar = entry.data.getName()
   if (jar.matches(excludeFilter)) {
     Nil
   } else {
     Seq(entry)
   }
})
fullClasspath in Runtime = filteredCP
Run Code Online (Sandbox Code Playgroud)

我很确定必须有简单的方法来做到这一点,但到目前为止它已经让我望而却步.

编辑:根据Pablo的使用托管类路径而不是非托管类的消息我可以将问题改为:如何将本地jar添加到managedClasspath.我的罐子放在一个带有(非常)非标准布局的本地文件夹中:

lib/testng.jar
lib/gwt/2.3/gwt-user.jar
lib/jetty/servlet.jar
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在寻找类似的东西:

libraryDependencies += "testng" % "provided->test"
libraryDependencies += "gwt" % "2.3" % "gwt-user" % "provided->compile"
libraryDependencies += "jetty" % "servlet" % "provided->default"
Run Code Online (Sandbox Code Playgroud)

允许我从我自己的本地lib文件夹中获取jar.

scala sbt

7
推荐指数
1
解决办法
5697
查看次数

在Scala中重载通用事件处理程序

如果我定义以下通用事件处理程序

trait Handles[E <: Event] {
  def handle(event: E)
}
Run Code Online (Sandbox Code Playgroud)

事件类型是这样的

trait Event {

}
class InventoryItemDeactivated(val id: UUID) extends Event;

class InventoryItemCreated(val id: UUID, val name: String) extends Event;
Run Code Online (Sandbox Code Playgroud)

那么我如何创建一个为每个事件实现事件处理程序的类?我试过了:

class InventoryListView extends Handles[InventoryItemCreated] with Handles[InventoryItemDeactivated] {
    def handle(event: InventoryItemCreated) = {

    }

    def handle(event: InventoryItemDeactivated) = {

    }
  }
Run Code Online (Sandbox Code Playgroud)

但斯卡拉抱怨说,一个特质不能被遗传两次.

我发现这个答案暗示了一个解决方案,但它接缝需要多个类(每个处理程序一个).这是否真的是唯一的方法,或者是否有其他一些Scala构造我可以用来使单个类实现多个通用事件处理程序(即使用案例类,清单或其他一些奇特的构造)?

scala type-erasure reification

7
推荐指数
1
解决办法
1510
查看次数

将SVG曲线拟合为多项式

假设我有像x²或2x +3x²这样的函数,那么如何创建适合这些函数的SVG路径呢?

根据我对SVGBezier曲线的有限理解,我相信我正在寻找一种简单的技术来构造贝塞尔控制点,以确保结果图符合给定的函数.您可以安全地假设(如果您还没有猜到)我是图形编程的新手.我知道像gnuplot这样的框架可以执行这种类型的插值,但我正在寻找更多关于如何使用SVGJavaScript手动完成的解释.

编辑:精确拟合并不是一个严格的要求,但结果图必须合理准确(出于教学目的).

javascript graphics svg

7
推荐指数
1
解决办法
2198
查看次数

在(J)Ruby代码中安装gem

我正在使用JRubyCucumber,正在寻找一种运行方式

 jruby -S gem update --system
 jruby -S gem install cucumber
Run Code Online (Sandbox Code Playgroud)

来自Java ScriptEngine.没有任何谷歌搜索让我解决这个问题.基本上我希望能够做这样的事情

 ScriptEngineManager manager = new ScriptEngineManager();
 ScriptEngine jRubyEngine = manager.getEngineByName("jruby");
 : // some unknown code here
 jRubeEngine.eval("call gems install/update from inside JRuby")
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个?

ruby java jruby

6
推荐指数
1
解决办法
976
查看次数

从数据库加载GWT消息

在GWT中,通常使用如下接口加载i18n字符串:

public interface StatusMessage extends Messages {
   String error(String username);
   :
}
Run Code Online (Sandbox Code Playgroud)

然后从StatusMessage.property文件加载实际的字符串:

error=User: {0} does not have access to resource
Run Code Online (Sandbox Code Playgroud)

这是一个很好的解决方案,但是我的客户端对于将i18n字符串放在数据库中的要求是不可靠的,因此可以在运行时更改它们(尽管它不是要求它们实时更改).

一种解决方案是创建一个异步服务,它接受消息ID用户区域设置并返回一个字符串.我已经实现了这个并且发现它非常难看(它引入了大量与服务器的额外通信,加上它使得属性占位符替换相当复杂).

所以我的问题是,我可以通过一些很好的方式实现一个自定义消息提供程序,它可以在一个大的空间(对于当前用户会话)加载来自后端的消息.如果它也可以挂钩到默认的GWT消息机制,那么我会非常高兴(即我可以创建一个类似于上面的接口并继续使用漂亮的{0},{1} ...属性替换格式).

我们也欢迎在GWT中提供干净的数据库驱动消息的其他建议.

java gwt internationalization

6
推荐指数
1
解决办法
2077
查看次数

移动跨浏览器Web测试

在构建网站时,我经常使用Browsershots等工具来确保我的网页在不同的浏览器中看起来相当不错.然而,我开始抱怨在不同的便携式设备上运行的一堆移动浏览器.

我的问题是如何最好地进行移动跨浏览器测试?(不需要我安装大量不同的移动仿真器的答案将是首选).

testing web-applications cross-browser

6
推荐指数
1
解决办法
1603
查看次数

Bash:迭代Map的正确方法

在Bash中,我可以使用这种常见结构创建一个地图(哈希表)

hput() {
  eval "$1""$2"='$3'
}

hget() {
  eval echo '${'"$1$2"'#hash}'
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

hput capitals France Paris
hput capitals Spain Madrid
echo "$(hget capitals France)"
Run Code Online (Sandbox Code Playgroud)

但是,我如何最好地迭代地图中的条目?例如,在Java中我会这样做:

for (Map.Entry<String, String> entry : capitals.entrySet()) {
  System.out.println("Country " + entry.getKey() + " capital " + entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)

是否有一种在Bash中完成类似事情的常用方法?

iteration bash hashtable map

4
推荐指数
1
解决办法
1万
查看次数

WiX:使用Burn在MSI中捆绑依赖项

我使用WiX v3.6.1601.0中的刻录工具创建一个将下载我的项目依赖项(.NET 3.5)的引导程序.然而,最终结果是两个可执行文件(程序MSI和将下载依赖项的exe).由于我的许多客户接触不了解使用哪个可执行文件,我想通过只发送一个文件(即MSI)使其更简单.

这是否可以与Burn一起使用?如果可以的话,任何人都可以向我指出如何创建一个将引导其自身依赖关系的单个MSI的文档.

installer windows-installer wix bootstrapper

3
推荐指数
1
解决办法
1066
查看次数

匹配列表列表中的单个元素

如果我有一个列表List [Any]就像这样

val list = List(List(1,1),2,List(3,List(5,8)))

然后我如何编写区分的匹配语句

  1. 任何非列表类型的单个元素(即上面的2个)
  2. 作为列表的元素(即列表(1,1)列表(3,列表(5,8)从上面)

或者在伪scala中

list match {
  case x:"single non-list element" => // do something with single element x
  case y:"where y is a list"       => // do something with list y
}
Run Code Online (Sandbox Code Playgroud)

通常的head :: tails匹配不起作用,因为head可以是包含其他列表的Any类型.

scala

2
推荐指数
2
解决办法
1564
查看次数