引子:在写静态引入的一篇文章的时候,用到了javac,以及java命令,因为不经常使用所以出现了很多问题,现与大家分享
1. 用javac的时候如果这个类有包怎么办?
- 解决一:直接用javac编译,然后创建包目录,把这个class放到正确的包目录下。
- 解决二:上面一种方法很笨,用
javac -d . *.java
可以直接编译后放入对应的目录下
“-d”则是设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的 子目录中,必要时创建目录。
2. 如何打包编译好的类?
示例如下:
jar -cvf Print.jar bupt\chj\*
规范如下:
写道
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
3. 如何创建一个可执行jar包?
所用的两个文件:
package bupt.chj.bean; public final class people { public static int age() { return 30; } }
package bupt.chj.test; import bupt.chj.bean.*; public class test { public static void main(String[]args) { System.out.println(people.age()); } }
test是主类。调用了people类的静态方法,输出30.
步骤如下:
- javac -d . *.java
- jar -cvf test.jar *
- 修改manifest.mf 加入:Main-Class: bupt.chj.test.test
- java -jar test.jar
4. 如何使用一个jar包在java的时候?
示例:
javac -cp Print.jar test.java java -classpath Print.jar; test