示例目录结构:
X:scalabinX:scalabuild.batX:scalaMANIFEST.MFX:scalasrcX:scalasrcfooX:scalasrcfooHelloWorld.scala
HelloWorld.scala:
//file: foo/HelloWorld.scalapackage foo { object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }}MANIFEST.MF:
Main-Class: foo.HelloWorldClass-Path: scala-library.jar
build.bat:
@ECHO OFFIF EXIST hellow.jar DEL hellow.jarIF NOT EXIST scala-library.jar COPY %SCALA_HOME%libscala-library.jar .CALL scalac -sourcepath src -d bin srcfooHelloWorld.scalaCD binjar -cfm ..hellow.jar ..MANIFEST.MF *.*CD ..java -jar hellow.jar
为了成功使用 -jar 开关,您需要在 meta-INF / MANIFEST.MF 文件中有两个条目:主类;任何依赖项的相对URL。文档说明:
-罐
执行封装在JAR文件中的程序。第一个参数是JAR文件的名称,而不是启动类的名称。为了使此选项起作用,JAR文件的清单必须包含Main-
Class形式的行:classname。在这里,类名标识具有公共静态void main(String []
args)方法的类,该方法充当应用程序的起点。有关使用Jar文件和Jar文件清单的信息,请参见Jar工具参考页和Java教程的Jar跟踪。使用此选项时,JAR文件是所有用户类的源, 而其他用户类路径设置将被忽略。
- java命令行用法
- 清单规格
(注意:大多数ZIP应用程序都可以检查JAR文件;我可能忽略了批处理脚本中目录名称中的空格; Scala代码运行程序版本2.7.4.final。)
为了完整起见,请使用等效的bash脚本:
#!/bin/bashif [ ! $SCALA_HOME ]then echo ERROR: set a SCALA_HOME environment variable exitfiif [ ! -f scala-library.jar ]then cp $SCALA_HOME/lib/scala-library.jar .fiscalac -sourcepath src -d bin src/foo/HelloWorld.scalacd binjar -cfm ../hellow.jar ../MANIFEST.MF *cd ..java -jar hellow.jar



