一:命令行编译文件
手动在c:\temp创建cn.com.test.Man.java –即c:\temp\cn\com\test\Man.java –c:\temp可以替换成任何路径,后续命令同样替换 编译: –X:\>java c:\temp\cn\com\test\Man.java 运行 –X:\>java -classpath .;c:\temp cn.com.test.Man X代表任意盘符或路径
二:运行class文件
java -classpath .;c:\temp cn.com.test.Man 第一部分:java,执行命令,是java.exe的简写 第二部分:-classpath 固定格式参数,可以简写成-cp. 第三部分:是一个(Windows分号,Linux/Mac冒号连接起的)字符串。按分隔符隔开,得到一个个子路径。当运行cn.com.test.Man类的过程中,如果需要用到其他的类,就会分裂第三部分的字符串,得到多个子路径,然后依次在每个路 径下,再去寻找相应类(全称,包名以点隔开对应到目录) 第四部分:主执行类的全称(含包名)
package cn.com.test; public class Man{ public static void main(String[] args){ System.out.println("Hello"); } }
三:编译和运行规则
–编译一个类,需要java文件的全路径,包括扩展名。 –运行一个类,需写类名全称(非文件路径),无须写扩展名。 –编译类的时候,需要给出这个类所依赖的类(包括依赖的类再次依赖的所有其他类)的所在路径 –运行类的时候,需要给出这个类,以及被依赖类的路径总和。 –classpath参数也可以包含jar包。如果路径内有空格,请将classpath参数整体加双引号。 –java -classpath “.;c:\test.jar;c:\temp;c:\a bc” cn.com.test.Man
按照路径前后优先级进行搜索,其中空格隔开c:\a bc表示在这个c目录下的a和bc文件夹下查找文件
(一)C.java编译运行
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package A.B.C; public class C{ public int number=10; public int getNum(){ return number; } public void setNum(int num){ this.number=num; } public static void main(String[] args){ C c=new C(); System.out.println("Hello C"+c.getNum()); } }
(二)F.java编译运行
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package D.E.F; import A.B.C.C; public class F{ public int number=20; public int getNum(){ return number; } public void setNum(int num){ this.number=num; } public static void main(String[] args){ C c=new C(); c.setNum(13); System.out.println("Hello F"+c.getNum()); } }
(三)H.java编译运行
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package G.H; import D.E.F.F; public class H{ public static void main(String[] args){ F f=new F(); f.setNum(31); System.out.println("Hello H"+f.getNum()); } }
四:总结
–包名和类所在的目录必须严格一致
–在命令行中,必须依靠classpath来指引所需要的类
–编译需要文件的全路径,运行需要类的完整