小编Phi*_*ppe的帖子

如何从jar文件加载依赖于另一个库的库

我想将我的应用程序作为一个自包含的jar文件发送.jar文件应包含所有类文件,以及两个共享库.其中一个共享库是为JNI编写的,实质上是另一个共享库(100%C).

我首先尝试运行没有库的jar文件,但可以通过LD_LIBRARY_PATH环境变量访问它们.这工作得很好.

然后我将JNI库放入jar文件中.我已经阅读过从jar文件中加载库,首先将它们复制到一些临时目录,这对我来说效果很好(请注意,100%C库,我想,像以前一样加载).

现在我想将两个库放入jar中,但我不明白如何确保它们都被加载.当然我可以将它们都复制到一个临时目录,但当我加载"间接"时,它总是给我:

java.lang.UnsatisfiedLinkError:/tmp/.../libindirect.so:/libpure.so:无法打开共享对象文件:没有这样的文件或目录

我试图通过在其临时文件上明确地调用System.load(...)来强制JVM加载"100%C"库,但这样做效果不佳.我怀疑系统在解析libindirect.so中的链接时正在寻找它,但不关心JVM加载了什么.

那个人可以帮助我吗?

谢谢

java dll java-native-interface jar shared-libraries

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

Scala方法的类型和方法作为参数

在下面的代码示例中,我不明白为什么函数fun可以作为参数传递给方法addAction.该方法fun属于类型Unit,而该方法addAction需要类型的函数() => Unit.

如果fun是类型() => Unit,那么当我尝试添加到操作列表时,为什么编译器会抱怨fun类型?Unitfunactions = fun :: actions

package myscala

object MyScala {

  def fun() { println("fun1 executed.") }

  def addAction(a: () => Unit) {
    actions = a :: actions
  }

  var actions: List[() => Unit] = List()

  def main(args: Array[String]) {
    // the following line would produce a compiler error (found: Unit, required: () => Unit), it's OK …
Run Code Online (Sandbox Code Playgroud)

methods scala anonymous-function

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

用jline预填充一条线

无论是使用的JLine(或JLine2),是有可能发出一个电话readlineConsoleReader,并有中,除了标准的提示,缓冲区预填充我选择的字符串?

我试过这样做,例如:

reader.getCursorBuffer().write("Default");
reader.readLine("Prompt> ");
Run Code Online (Sandbox Code Playgroud)

这似乎确实写入缓冲区,但该行只显示提示.如果我按回车键,就会按照我的预期readLine返回"Default".如果我清除屏幕,则会重新绘制缓冲区并正确显示.

我的理解是,reader.redrawLine()在打电话之后我应该以某种方式打电话readLine.然而,最后一个是阻塞,这使得它很难(不是不可能,但使用第二个线程肯定是错误的).

java readline jline

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

查找恰好在一个位置上不同的所有序列对

我需要一个表示一组序列(所有相同,已知,长度)的数据结构,具有以下非标准操作:

在集合中找到两个恰好在一个索引上不同的序列.(或确定不存在这样的对.)

如果N是序列的长度和序列M的数量,则有一个明显的O(N*M*M)算法.我想知道是否有一种更有效地解决这个问题的标准方法.如果需要,我愿意应用预处理.

奖励点如果不是返回一对,则算法返回在同一点上不同的所有序列.

或者,我也对一个解决方案感兴趣,我可以有效地检查特定序列在一个索引处是否与该集合中的任何序列不同.如果它有帮助,我们可以假设在集合中,没有两个序列具有该属性.

编辑:你可以假设N相当小.通过这个,我的意思是改进,例如O(log(N)*M*M)对我的用例不是立即有用.

algorithm dynamic-programming

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

使用命令行工具对JSON/JavaScript元组进行排序

我有一个文件中的JavaScript元组列表,每行一个,如下:

{ x : 12, y : -1.0, as : [ 2, 0, 0 ], str : "xxx", d : 0.041 },
{ x : 27, y : 11.4, as : [ 1, 1, 7 ], str : "yyy", d : 0.235 },
{ x : -4, y :  2.0, as : [ 7, 8, 3 ], str : "zzz", d : 0.002 },
{ x : 44, y :  5.4, as : [ 9, 4, 6 ], str : …
Run Code Online (Sandbox Code Playgroud)

sorting bash awk json

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

设计不可变,可打字的树木

这是我一再遇到的设计问题.假设您正在构建编译器,如何在树中存储类型?

举一个简单ExprType层次,并假设PlusEquals多态(加上在短短布尔值||,例如).

trait Type
case object BoolType extends Type
case object IntType extends Type
case object Untyped extends Type

trait Expr { var tpe : Type = Untyped }

case class Var(id : String) extends Expr
case class Plus(l : Expr, r : Expr) extends Expr
case class Equals(l : Expr, r : Expr) extends Expr
// ...
Run Code Online (Sandbox Code Playgroud)

进一步假设我在构造表达式树时不知道标识符的类型,因此无法通过构造知道类型.现在典型的类型检查功能可能如下所示:

def typeCheck(env : Map[String,Type])(expr : Expr) : Expr = expr match …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala immutability

5
推荐指数
1
解决办法
400
查看次数

SBT不会重新编写用java文件编写的junit测试用例

我用SBT 0.11.2创建了一个Scala/Java混合项目.我的JUnit测试配置是

resolvers += "twitter.com" at "http://maven.twttr.com/"

seq(com.github.retronym.SbtOneJar.oneJarSettings: _*)

libraryDependencies += "com.novocode" % "junit-interface" % "0.10-M2" % "test"
Run Code Online (Sandbox Code Playgroud)

当我在Scala中编写JUnit测试用例时@Test,一切顺利.但是当我编写Java JUnit测试用例,然后test在sbt中运行时,Java JUnit测试无法重新编译.仅执行用Scala编写的测试用例.

如何让sbt同时识别我的Java和Scala测试用例?

testing junit scala sbt

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

绑定单个值以便理解

学习你Haskell的教程有一个例子使用let列表中理解粘结剂:

calcBmis xs = [bmi | (w, h) <- xs, let bmi = w / h ^ 2, bmi >= 25.0]
Run Code Online (Sandbox Code Playgroud)

该函数采用高度/重量对列表,并返回超出某个限制的相应体质量指数列表,例如:

ghci> calcBmis [(70, 1.85), (50, 2.00), (130, 1.62)]
[49.53513183965858]
Run Code Online (Sandbox Code Playgroud)

这里有趣的是,bmi理解中绑定的值既可以用于保护,也可以用在结果表达式中.我知道如何在Scala中执行类似操作的唯一方法是编写:

def calcBmis(xs : Seq[(Double,Double)]) =
  for((w,h) <- xs ; bmi <- Some(w / (h*h)) if bmi >= 25.0) yield bmi
Run Code Online (Sandbox Code Playgroud)

不得不把我的价值包裹在Some这里感觉不对.谁知道更好的方法?

haskell scala for-comprehension

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

得到"错误:类型不匹配;找到:需要单位:()=>单位"在回调上

我刚刚开始阅读有关scala的教程并且遇到了阻塞.我已经将几个示例合并在一起并且收到错误,但不知道为什么.

import java.text.DateFormat._
import java.util.{Date, Locale}

object FrenchDate {
  def main(args: Array[String]) {
    timer(println(frenchDate))
  }

  def frenchDate():String = {
    val now = new Date
    val df = getDateInstance(LONG, Locale.FRANCE)
    df format now
  }

  def timer(callback: () => Unit) {
    while(true) {callback(); Thread sleep 1000}
  }
}
Run Code Online (Sandbox Code Playgroud)

带来错误

error: type mismatch;
found   : Unit
required: () => Unit
println(frenchDate)
Run Code Online (Sandbox Code Playgroud)

而以下工作

import java.text.DateFormat._
import java.util.{Date, Locale}

object FrenchDate {
  def main(args: Array[String]) {
    timer(frenchDate)
  }

  def frenchDate() {
    val now = new …
Run Code Online (Sandbox Code Playgroud)

types scala callback

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

BASH:有一种简单的方法来检查字符串是否是有效的SHA-1(或MD5)哈希?

这一切都在标题中.

相位的问题的另一种方法是:在bash,什么是检查字符串是否是40(或32)中的人物的范围序列的简洁的方式[0-9][a-f]

regex bash

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

将命令应用于所有提交

为了收集有关Git存储库的一些统计信息,我正在寻找一种方法来执行以下操作:

  • 对于每次提交,执行命令(ex; du -h).
  • 该命令应该在提交后从存储库基本目录"看起来像"运行.
  • 理想情况下,该命令可以访问提交哈希和时间戳.

一个以准Bash表示的应用程序将运行

echo $HASH $TIME `du -hs --exclude=".git" . | awk '{ print $1; }'` >> ../sizeovertime
Run Code Online (Sandbox Code Playgroud)

在所有提交中了解存储库的增长.

(不知何故,感觉应该可以使用git filter-branch --tree-filter它,但这对我来说看起来像是一个可怕的黑客.)

git

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

Scala模式匹配将int与列表进行比较

我正在尝试编写一个递归程序,用于将int与列表中的每个值进行比较.问题是我一直收到无法访问的错误,我真的不知道为什么.我的代码是

def isIn(x : Int, l : List[Int]) : Boolean = l match {
  case Nil => false
  case x => true
  case h :: t => isIn(x, t)
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么这不起作用.或者我想,我想知道如何将x与头部用例进行比较.

scala pattern-matching

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

写这个更简洁的方法?需要检查一个数字是否低于0

val total_breaks = //a random number

total_breaks match {
  case i if(i < 0) => chartTemplate.setAttribute("totalBreaks", 0)
  case _ => chartTemplate.setAttribute("totalBreaks", total_breaks)
}
Run Code Online (Sandbox Code Playgroud)

我在想Scala中有一个函数可以缩短它.我以为min这样做但我猜不是.我似乎无法找到文件min,max等等.

有点像total_breaks.min(0).如果不在0,则显示0如果不显示total_breaks.

也有办法做这样的事情

(4 + 5) match {
  case 0 => println("test")
  case _ => println(_) //i need to display the number passed into match?  Is this not  possible?
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做case i => println(i)是一样的case _ =>?这是后备吗?

scala

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