所以我一直在尝试使用signal-collect框架,我下载了.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's
添加到类路径以编译PageRank.scala
:
$ 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
答案 0 :(得分:29)
您需要将两个类路径路径作为单个参数传递。
试试这个:
$ 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)
它对我有用。
答案 1 :(得分:3)
似乎根据已安装的Java版本,类路径中包含多个JAR的通配符可能会也可能不起作用。我在StackOverflow的其他地方找到了https://neo4j.com/docs/java-reference/current/#tutorial-traversal(请注意,你可以在'echo'后面有多个文件夹,用空格分隔):
scalac -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':') PageRank.scala
scala -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':') PageRank
答案 2 :(得分:1)
为简单起见,您可以使用: scala -classpath $(echo * .jar依赖项/*.jar | tr''':')PageRank.scala