Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加.jar';s到类路径(Scala)_Scala_Jar_Jvm_Classpath - Fatal编程技术网

添加.jar';s到类路径(Scala)

添加.jar';s到类路径(Scala),scala,jar,jvm,classpath,Scala,Jar,Jvm,Classpath,所以我一直在尝试使用这个框架,我下载了.jar文件并将其解压缩到一个文件夹中。当前文件夹结构如下所示: 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 其中,Pag

所以我一直在尝试使用这个框架,我下载了
.jar
文件并将其解压缩到一个文件夹中。当前文件夹结构如下所示:

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测试代码,即:

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的
添加到类路径中以编译
PageRank.Scala

$scalac-classpath*.jar dependencies/*.jar PageRank.scala
错误:使用UTF-8解码core-1.1.1.jar时发生IO错误
请尝试使用-encoding选项指定另一个
错误:使用UTF-8解码javaapi-1.1.1-javadoc.jar时发生IO错误
请尝试使用-encoding选项指定另一个
错误:使用UTF-8解码javaapi-1.1.1-sources.jar时发生IO错误
请尝试使用-encoding选项指定另一个
错误:使用UTF-8解码javaapi-1.1.1.jar时发生IO错误
请尝试使用-encoding选项指定另一个
错误:使用UTF-8解码依赖项/je-3.2.76.jar时发生IO错误
请尝试使用-encoding选项指定另一个
错误:使用UTF-8解码依赖项/scala-library-2.9.1.jar时发生IO错误
请尝试使用-encoding选项指定另一个
发现6个错误
我不知道出了什么问题。。。发生了什么事? 谢谢 当做
-kstruct

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

试试这个:

$ 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)

这对我来说很有效。

根据安装的Java版本,类路径中包含多个JAR的通配符可能有效,也可能无效。我在StackOverflow上的其他地方找到了(请注意,在“echo”之后可以有任意多个文件夹,以空格分隔):


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

您也可以使用
要将jar名称+1分开以获得完整性,请注意,在编译和执行时都必须添加类路径。这是我第一眼看到的东西。
scalac -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':')  PageRank.scala
scala -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':')  PageRank