假设您有以下目录结构:
MyJavaProject
|-src
|- com
|- example
|- Main.java
要在命令行中编译此类项目,(无外部依赖项)您需要调用命令
$ cd MyJavaProject
$ mkdir bin //to separate *.class file from source files
$ javac -d bin src\com\example\Main.java
这将创建Main.class
文件输入bin
目录。要将其打包到 *.jar 文件,您可以:
1)用二进制文件创建jar并在cmd中指定Main类
2)创建Manifes并将其嵌入到jar中(我将重点关注这一点)
你应该创建META-INF
目录下src
并在其中创建MANIFEST.mf
file
您的清单应如下所示:
Manifest-Version: 1.0
Created-By: <Your info>
Main-Class: com.example.Main
记得在清单末尾添加空行!
在这种情况下,您指定Manifest-Version
属性,Created-By
属性,以及要运行的主类的完全限定名称Main-Class
属性
要使用此清单文件和二进制文件创建 Jar,请调用命令
$ cd bin
$ jar cfm MyJavaProject.jar ..\src\META-INF\MANIFEST.MF .
这将创建一个名为的新罐子MyJavaProject.jar
并使用你的清单
如果您的项目依赖于外部类或 jar,请在编译时将它们添加到您的类路径中(-cp
选项)并添加另一行Manifest
ClassPath: path/to/dependent/jars/jar.jar
重新编译它并创建新的 jar 并享受您的 Java 任务:)
有关清单的更多信息,请参阅:docs http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html
PS:从命令行使用 jared 清单可能看起来很难看,但它可以教你一些类似 ava 的概念。如果您想跳过它,请考虑使用阿帕奇Maven http://maven.apache.org/ or 阿帕奇蚂蚁 http://ant.apache.org/