编译命令 javac +文件名(这个时候加文件名 即xxx.java)
运行命令 java +类名 (注意packet 如果类在a.b中,就用a.b.xxxxx 是类名不是文件名 不加扩展名 也不加.class)
javac下面可用的一些东西
javac -d . Helloworld.java
//意思是编译Helloworld.java文件,所生成的class文件放在当前文件夹(.),同理(..)是上级目录
如果有packet声明,则要用-d明确表示放在哪里,包名映射为文件夹名
.是在根文件夹
如果命令行:
C:\a\b> java -classpath c:\ a.b.helloworld morning
是对的,因为他要从c:\下面去找,能找到a文件里面有b文件里面有helloworld,
但是如果命令行是:
C:\a\b> java -classpath . a.b.helloworld morning
就没办法运行,因为.是在当前文件夹下面找,找不到a/b
直接进入a\b 运行helloworld也是错的,因为这个不是helloworld类,而是a.b.helloworld
(可以理解为一种映射,将a,b映射为相同的文件层次去找他,但是类本身是a.b.helloworld类)
-classpath 就是在指定文件夹下面去找我们的类,不去其他任何一个文件夹下面了(其他还会从环境变量的PATH里面找)
-classpath也可以指定多个文件夹,中间分号隔开
例如-classpath c:\;d:\test;f:\study\a.zip 就是先去c盘找,找不到去d:\test找,再找不到去f盘下面的..去找
如果不用classpath呢
1.先找classpath环境变量
2,在当前文件夹下面找
再找不到 直接报错
归档 java archive 交给用户的都是归档后的文件(只给class文件)
jar cf a.jar *class
归档后直接运行a.jar就行了