多个文件的package组织方式 1 2 3 4 5 6 package com.east import com.west._object objectMain extends App{ println("add Function from west used in east, 1+2=%d" .format(Add.add(1 ,2 ))) }
1 2 3 4 5 package com.west object Add { def add (a:Int, b:Int) = a + b }
多个文件的package组织方式 编译 scalac a.scala b.scala
生成com文件夹(JVM 编译完的.class文件) 运行 scala com.east.main
正确打印信息
object main 方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package com.north object NorthWolf { def main (args:Array[String]) { println("add Function from west used in north, 3+4=%d" .format(Add.add(3 ,4 ))) } } ``` 编译 `scalac a.scala b.scala c.scala` 更新com文件夹 运行 `scala com.north.NorthWolf` 正确打印信息 Makefile 如下 ```Makefile objects = com source = a.scala b.scala c.scala .PHONY: run run:com scala com.east.objectMain scala com.north.NorthWolf $(objects) : $(source) scalac $(source)
SCALA编译生成的com为package目录, *.class 为class字节码,可以被JVM执行 (所以SCALA编译玩的.scala可以在任何JVM上执行,也就说scala的程序也可以在Android上运行) 比如com/east/main.class ,可以直接scala com.east.main
来执行
1 2 3 4 5 6 7 8 9 10 11 12 $ :tree com com ├── east │ ├── main$.class │ ├── main$delayedInit$body.class │ └── main.class ├── north │ ├── NorthWolf$.class │ └── NorthWolf.class └── west ├── Add$.class └── Add.class
关于*.scala 和 *$.scala 的区别可以在网上自行搜索
原则上只要把com文件夹打包就可以发布为一个SCALA/JAVA程序
jar打包和运行 如何讲程序打包成jar 命令行运行jar cvf com.jar com
得到com.jar 在任意地方 scala -classpath com.jar com.north.NorthWolf
可直接运行函数
实例参见目录/nutstore/2017pc/lab/scala/packageTest