2012-04-09 156 views
17

所以我一直在嘗試使用signal-collect框架,我下載了.jar文件並將其解壓縮到一個文件夾中。目前,該文件夾結構是這樣的:將.jar添加到類路徑(Scala)

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到classpath編譯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 

我想不出什麼錯誤......什麼之H appening? 謝謝! Regards, -kstruct

回答

28

您需要將兩個類路徑路徑作爲單個參數傳遞。

試試這個:

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

它爲我工作。

+4

你也可以用';'分離罐名 – Jus12 2012-04-10 06:48:24

+2

+1爲了完成起見,需要注意的是,在編譯和執行**時,都必須添加類路徑。這是我乍一看錯過的東西。 – JoErNanO 2015-11-18 12:50:18

1

看來,根據安裝的Java版本,類路徑中包含多個JAR的通配符可能工作也可能不工作。我發現this trick其他地方在計算器上(注意,你可以有後的「迴響」多個文件夾如你所願,用空格隔開):

scalac -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':') PageRank.scala 
scala -classpath $(echo *.jar dependencies/*.jar | tr ' ' ':') PageRank 
相關問題