命令行生成可执行的jar包 |
您所在的位置:网站首页 › 本地如何运行jar包 › 命令行生成可执行的jar包 |
jar包
jar包分类
jar包分为可执行jar包和不可执行jar包 jar包解压后都有一个META-INF/MANIFEST.MF文件 可执行jar包和不可执行jar包的区别是MANIFEST.MF文件里有主类入口配置:Main-Class: com.example.MyClass 注意MANIFEST.MF配置后的冒号后有空格 可执行jar包,直接双击就可以运行,或者同目录下cmd中执行命令:java -jar jar包名.jar 如何生成jar包(1)javac编译java文件 javac Hello.java (2)将编译后的Hello.class文件打成jar包 jar -cvf hello.jar Hello.class c表示要创建一个新的jar包,v表示创建的过程中在控制台输出创建过程的一些信息,f表示给生成的jar包命名 (3)运行jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 添加Main-Class属性 用压缩软件打开hello.jar,会发现里面多了一个META-INF文件夹,里面有一个MENIFEST.MF的文件,用记事本打开 1 Manifest-Version: 1.0 2 Created-By: 1.8.0_121 (Oracle Corporation) 3在第三行的位置写入 Main-Class: Hello (注意冒号后面有一个空格,整个文件最后有一行空行),保存 再次运行 java -jar hello.jar ,此时成功在控制台看到 hello ,成功 附:1 如果有多个java文件,则在编译的时候同时编译,然后将多个class文件同时打包,后续过程相同 2.如果多个java文件不在同一个文件夹,此时需要注意,他们编译后的class还在各自的文件夹,可以 javac A.java bbb/B.java -d target 编译到一个相同的文件夹 3.如果想加入jar,则在编译的时候 javac -cp A.jar B.java 并且在最终生成的jar包中修改MENIFEST.MF,在MENIFEST.MF文件中配置一个新属性:Class-Path,路径指向你需要的所有jar包,引入多个jar包,中间用空格隔开 1 Manifest-Version: 1.0 2 Created-By: 1.8.0_121 (Oracle Corporation) 3 Main-Class: B 4 Class-Path: A.jar 54.有的时候我们是在一些集成开发环境中拷贝一些java文件,编译出来的class文件是带着包名的,所以要在jar包中创建相应目录,把class文件移入相应的目录,并且修改MENIFEST.MF 1 Manifest-Version: 1.0 2 Created-By: 1.8.0_121 (Oracle Corporation) 3 Main-Class: com.example.lib.Main 4 Class-Path: A.jar 57.想读取jar包内的资源文件,getClass().getResourceAsStream("a.txt")的方法读取输入流 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |