2017-04-06 52 views

回答

0

我认为您应该使用classpath参数和选定的库jar文件执行scalacscala

顺便说一句,它使用sbt更方便。

1

让我们假设你有Scala和阿卡在/ home/LEO /应用/和Scala的二进制文件的地方安装了可搜索(如export PATH=$PATH:home/leo/apps/scala-2.11.8/bin

接下来,让我们说你有一些补充沿有一个Scala的主要应用Tweets.scala封装在akkastreams类在/ home/LEO/myproject的/:

akkastreams/ 
    Tweets.scala 
    Author.scala 
    HashTag.scala 
    Message.scala 
    ... 

这里就是你的编译和运行应用程序:

cd /home/leo/myproject/ 

# Compile all files in package akkastreams: 
scalac -cp "/home/leo/apps/akka-2.4.9/lib/akka/*" akkastreams/*.scala 

# Run the main app Tweets (object Tweets extends App): 
# Note that classpath includes also current subdir '.' 
scala -cp "/home/leo/apps/akka-2.4.9/lib/akka/*:." akkastreams.Tweets 

一些注意事项:

  1. 您可以只包括特定的Akka罐而不是所有的罐。
  2. 如果没有依赖关系和版本控制由sbt管理,则需要手动维护Scala捆绑的Akka库与Akka自己的库之间的版本一致性。
  3. 虽然这是一个很好的练习,以粗略的方式看待事情是如何完成的,但定期执行此操作显然是徒劳的。
+0

感谢Leo!这很有帮助。我设法让我的脚本以这种粗糙的方式工作。对于像我这样的初学者来说,它确实有助于看到引擎盖下面躺着什么,而不是盲目地依靠sbt来为我做所有事情。此后我也学会了如何使用sbt本地包装插件来打包我的scala程序 – jorjor17

+0

还值得注意的是,我最初认为我只需要akka-actor_2.11-2.4.17.jar用于我的简单脚本,依赖于akka-actor库,但不知怎的,当我在命令行上编译/运行它时,我需要在类路径中的akka​​发行版中包含完整的jar集合以使其工作;我的猜测是,不仅仅是我需要在我的类路径中包含的akka​​-actor jar,(不知道我需要哪些jar),所以我只是在我的类路径中包含了整个akka/*分发目录 – jorjor17

相关问题