在Scala中导入外部库

时间:2015-03-30 13:17:58

标签: scala intellij-idea import

我试图在项目中导入库org.apache.commons.math3.distribution.NormalDistribution

我在IntelliJ IDEA 14.1中为一个项目写了以下几行。我确定这里和那里几乎没有错误(我是Scala的新手,我也不具备以前的Java经验),所以道歉。我的问题是Scala似乎没有导入库,我不能在我的对象体上使用与它关联的函数(即cumulativeProbability)。

import org.apache.commons.math3.distribution.NormalDistribution
import scala.math._

// Compute statistical power given confidence level, significance level, sample sizes and means on the
// Normal distribution case
object test_math_lib {
  def main(n1: Int, n2: Int, significance: Double, mu1: Double, mu2: Double, alternative: String): Double = {
  if alternative = "two sided":
    val b = 0.50 // just for the sake of testing
    val x = new (1 - cumulativeProbability(b))
  }
}

这只是一个草稿,我只是自己编写这个函数,而且我以前没有Java和Scala的经验。

2 个答案:

答案 0 :(得分:2)

您只能在类cumulativeProbability的实例上调用方法NormalDistribution

因此,您首先必须创建一个NormalDistribution对象,然后在该对象上调用该方法。像这样:

val distr = new NormalDistribution()
val prob = distr.cumulativeProbability(b)

我不知道这一行中new的含义:

val x = new (1 - cumulativeProbability(b))

但这不是有效的语法。您使用new运算符创建新对象 - 我不知道您的意图是什么。

答案 1 :(得分:0)

首先,您需要确保项目可以使用依赖项。

例如,如果您的项目是基于sbt的,请参阅http://www.scala-sbt.org/0.13/docs/Library-Management.html,如果您使用maven,则故事几乎相同。
更新项目定义后,需要为IntelliJ重新创建项目文件,我认为你可以使用sbt-idea为sbt,最后重新导入项目。应该整合对maven的支持。

如果您直接在IntelliJ中创建项目而不依赖于这两个项目,则需要将jar依赖项添加到构建路径,请参阅https://confluence.jetbrains.com/display/IntelliJIDEA/Dependencies+Management+%28Build+Path%29

如果配置正确,那么您将在库的import语句下看不到红色波形。

关于代码段,您应该通过检查Javadoc来检查您对NormalDistribution实际做了什么,我读到您有一些不同的构造函数,通过它们可以配置您的实例,例如设置随机生成器明确。
当你获得实例时,你可以调用它上面的所有公共实例方法。