首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将.jar添加到类路径(Scala)

将.jar添加到类路径(Scala)
EN

Stack Overflow用户
提问于 2012-04-10 02:30:34
回答 3查看 28K关注 0票数 20

因此,我一直在尝试使用signal-collect框架,我下载了.jar文件并将其解压缩到一个文件夹中。当前的文件夹结构如下:

代码语言:javascript
复制
LICENSE.txt  
PageRank.scala  
core-1.1.1-sources.jar  
dependencies/  
javaapi-1.1.1-sources.jar  
NOTICE.txt  
README.txt  
core-1.1.1.jar  
javaapi-1.1.1-javadoc.jar  
javaapi-1.1.1.jar  

其中PageRank.scala是他们提供的Scala测试代码,即:

代码语言:javascript
复制
import com.signalcollect._

object PageRank extends App {
  val graph = GraphBuilder.build
  graph.addVertex(new PageRankVertex(id=1))
  graph.addVertex(new PageRankVertex(id=2))
  graph.addEdge(new PageRankEdge(sourceId=1, targetId=2))
  graph.addEdge(new PageRankEdge(sourceId=2, targetId=1))
  graph.execute
  graph.foreachVertex(println(_))
  graph.shutdown
}

class PageRankVertex(id: Any, dampingFactor: Double=0.85)
    extends DataGraphVertex(id=id, state=1-dampingFactor) {
  type Signal = Double

  def collect(oldState: Double, mostRecentSignals: Iterable[Double]): Double = {
    1 - dampingFactor + dampingFactor * mostRecentSignals.sum
  }

}

class PageRankEdge(sourceId: Any, targetId: Any)
    extends DefaultEdge(sourceId, targetId) {
  type SourceVertex = PageRankVertex

  def signal(sourceVertex: PageRankVertex) = {
    sourceVertex.state * weight / sourceVertex.sumOfOutWeights
  }

}

当涉及到JVM/Java/Scala时,我是一个新手,这是我尝试将.jar's添加到用于编译PageRank.scala的类路径中

代码语言:javascript
复制
$ scalac -classpath *.jar dependencies/*.jar PageRank.scala 
error: IO error while decoding core-1.1.1.jar with UTF-8
Please try specifying another one using the -encoding option
error: IO error while decoding javaapi-1.1.1-javadoc.jar with UTF-8
Please try specifying another one using the -encoding option
error: IO error while decoding javaapi-1.1.1-sources.jar with UTF-8
Please try specifying another one using the -encoding option
error: IO error while decoding javaapi-1.1.1.jar with UTF-8
Please try specifying another one using the -encoding option
error: IO error while decoding dependencies/je-3.2.76.jar with UTF-8
Please try specifying another one using the -encoding option
error: IO error while decoding dependencies/scala-library-2.9.1.jar with UTF-8
Please try specifying another one using the -encoding option
6 errors found

我不知道哪里出了问题……发生什么事了呢?谢谢!致敬,-kstruct

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-10 02:41:55

您需要将两个类路径都作为单个参数传递。

试试这个:

代码语言:javascript
复制
$ scalac -classpath "*.jar:dependencies/*.jar" PageRank.scala
$ scala -classpath "*.jar:dependencies/*.jar" PageRank
PageRankVertex(id=2, state=0.9999999999999997)
PageRankVertex(id=1, state=0.9999999999999997)

这对我很管用。

票数 31
EN

Stack Overflow用户

发布于 2017-06-28 19:47:06

根据安装的Java版本不同,类路径中包含多个JAR的通配符可能起作用,也可能不起作用。我在StackOverflow上的其他地方找到了this trick (请注意,你可以在'echo‘后面有任意多的文件夹,用空格分隔):

代码语言:javascript
复制
scalac -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':')  PageRank.scala
scala -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':')  PageRank
票数 3
EN

Stack Overflow用户

发布于 2019-03-09 21:46:32

为简单起见,您可以只使用: scala -classpath $(echo *.jar dependencies/*.jar | tr‘':') PageRank.scala

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10077899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档