刚工作,因为公司的要求,所以需要在DOS窗口运行java程序(项目部署在服务器上,所以这个时候不可能再去使用eclipse了;哎~eclipse让我忽略了很多基础)。弄了很久,所以写在博客里面以示鼓励并方便后面的查找。
我的JDK是1.7.0_51版本,前提是你的JAVA_HOME、path、classpath都已经设置好,这里就不再累赘了。我的Union项目位于E:\java SE下
bin目录下面也就是已经编译好了,lib存放需要的jar包,com下是编译好的class文件(com/ximucredit/dio/share/*.class)。要运行肯定需要先知道javac和java这两个命令。好了,开始说了。
运行的时候命令行位于bin目录下,java -cp .;lib/* com.ximucredit.dio.share.Interface。-cp和-classpath一样(有网友说是因为-classpath太长了,所以就用-cp代替;-ClassPath取首字母大写就是-cp)
下面是总结:1、classpath的包名要一起跟在后面(com.ximucredit.dio.share包名,Interface类名)
2、用了-cp或者-classpath之后需要.;不然会报错(报错的内容为找不到或无法加载主类),配置文件也可以找到,在编译的时候不需要.;(也是看到了一位网友说用了-cp会覆盖掉你设置的环境变量classpath。)
3、通配符不能这么去使用,如:*.jar ;而是应该把所有的jar包放在同一个文件夹(lib下面),然后这么去用lib/*
编译(另外一个项目):
画红线的编译是可以完成的;通过下面可以知道编译不需要.;,包之间需要用/ 隔开;
通过下面可以知道-d可以设定生成的class文件位于哪个文件夹下面,json位于test包下面所以生成的时候会把包一起生成;
区别:运行的时候需要,;表示当前路径,编译则不需要.;;运行时-cp可以有../(即改变当前路径),只是有../没有 .;会报错;编译的时候有../(改变当前路径)可以没有.;(因为classpath中的.;是找.class文件);运行的时候类名需要和包名一起才可以运行,编译的时候类名可以不和包名一起,可以位于包下编译(和包一起编译时用/)(下面测试lib位于E盘下)