我已經在scala lang論壇發佈了這個問題,但不幸的是我沒有得到任何答案。 第二次機會?在Scala中解釋器中綁定實例時的類路徑問題
我嘗試在此解釋器中嵌入解釋器並評估scala片段。我想在解釋器中綁定一個自定義類的實例。綜上所述,將是這樣的:
import scala.tools.nsc._
import scala.tools.nsc.interpreter._
class C {
def sayHello(s:String) = "hello "+s
}
object Main extends App {
val c= new C
val s = new Settings
s.usejavacp.value=true
val i = new IMain(s)
i.bind("myC",c)
i.bind("world","the world")
val script = "println(myC.sayHello(world))"
i.eval(script)
}
當我運行Eclipse(開普勒)這裏面的片斷 - OpenJDK6/7適用於這兩種 - BSD操作系統斯卡拉-2.11.0-M4 - scala- compiler.jar在它工作的路徑很好 如果我嘗試在repl中運行相同的代碼或直接使用scalac file.scala然後scala -cp。主要我收到以下錯誤
error: not found value myC
javax.script.ScriptException: compile-time error
at scala.tools.nsc.interpreter.IMain.compile(IMain.scala:575)
at scala.tools.nsc.interpreter.IMain.eval(IMain.scala:997)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
我能夠讓它在另一個操作系統(Win7的),但通過添加s.bootclasspath工作=「路徑/要/我的/班」
我懷疑一些類路徑問題
後來我能夠使其通過Java調用替換斯卡拉命令行調用這種方式運行: java -cp $CLASSPATH Main
與它的工作原理
我看着斯卡拉命令包含CLASSPATH的Scala庫,它是喜歡它澳鵬以不同的方式在java路徑中的ds scala庫。
有沒有人有任何建議?
感謝
基於以下意見補充:
Scalac不輸出任何錯誤 事實上,如果我運行:
java -cp .:$SCALA_PATH/lib/scala-library.jar:$SCALA_PATH/lib/scala-compiler.jar:$SCALA_PATH/lib/scala-reflect.jar Main
或建議斯卡拉-nobootcp它的工作原理(謝謝有價值的意見) 否則,如果我讓scala使用bootcp,啓動的行是下面的一個,它會失敗
java -Xbootclasspath/a:/usr/home/pcohen/Dev/Scala/scala-2.11.0-M4/lib/akka-actors.jar[...] -classpath "" [...]
當scala jar添加到bootclasspath時,它就像我的綁定失敗。我無法清楚地理解爲什麼這個bootclasspath差異會影響我的類。
你能證明收到這個錯誤時,您正在使用的scalac命令? – AlexBrand