这里如果报错,说明环境变量PATH没有配置。
如果没有配置PATH环境变量,仍然想要执行javac命令,那么就需切换到javac命令目录下去执行。
当执行一个程序的时候,首先在当前目录下查找是否有这个程序,如果没有,那么就去path环境变量下查找,以找到的第一个为准,也就是在path下有多个这个程序,但是找到了第一个就停止往后找了。
如果都没找到,那么就会报错了。
查看环境变量内容
命令行下设置环境变量PATH内容
set path=jdk路径in
注意,配置到bin目录。
命令行下配置,退出cmd,即失效,永久配置到环境变量配置文件中进行配置。
编写测试java文件
class Hello { } class Welcome { }
注意:编译的时候,对于文件名的大小写是不敏感的。
在Java的源文件中可以写入多个类,但是编译之后,每个类会单独生成一个字节码文件(class文件)。
当有很多的class文件的时候,给别人提供使用是不方便的,因此,可以将多个class文件进行打包,jar文件。
可以使用jar cvf xxx.jar Hello.class Welcome.class方式打包。
通常打包操作可通过IDE完成。
class Hello { } public class Welcome { }
当在一个源文件中定义了一个public的类,那么这个源文件的文件名必须取名为这个public类的类名。java中的规定。
因此,在一个源文件中,有且只能有一个public的类。也可以没有public的类,那么文件名可以是任意类的类名或者是其它的名字。
编译的时候,可以没有main函数,但是要想执行,必须有main函数。否则执行错误。
另外,java解释器,解释执行的时候,加载的是一个类,而不是一个文件,不是welcome.class这个文件。而是Welcome这个类。
java解释器要加载这个类,因此,后面的这个类名是大小写相关的。
第一次运行java Welcome没有报错,原因是,在Welcome.class目录下运行,能够找到对应文件。
第二次运行java Welcome报错,原因是,当前目录下没有Welcome.class文件了,且classpath环境变量没有配置,所以找不到类文件。
当定义了classpath之后,那么java解释器在加载一个类的时候,就会完全根据classpath定义的路径去搜索要加载的类。而不会去看是否当前目录下有这个class文件。
可以看到,java解释器加载类的时候,当定义了classpath的时候,是完全按照定义的classpath指定的路径去搜寻的,而不会在当前路径下查找了。即使当前路径下有这个类,也不会找到。
为了让当前路径下的类也能找到,那么classpath中添加当前路径‘.’即可。
为了配置的classpath永久生效,也需要配置到环境变量中去。
因此,需要配置两个环境变量:
path和classpath。