02-命令行下运行Java代码

02-命令行下运行Java代码

img

这里如果报错,说明环境变量PATH没有配置。

如果没有配置PATH环境变量,仍然想要执行javac命令,那么就需切换到javac命令目录下去执行。

当执行一个程序的时候,首先在当前目录下查找是否有这个程序,如果没有,那么就去path环境变量下查找,以找到的第一个为准,也就是在path下有多个这个程序,但是找到了第一个就停止往后找了。
如果都没找到,那么就会报错了。

查看环境变量内容

img

命令行下设置环境变量PATH内容

set path=jdk路径\bin

注意,配置到bin目录。

命令行下配置,退出cmd,即失效,永久配置到环境变量配置文件中进行配置。

img

img

注意,这里配置JAVA_HOME环境变量,然后通过该环境变量再去指定到bin目录,目的是不用去频繁的更改PATH环境变量,方式修改错误。如果jdk变换其他版本了,只需要更改JAVA_HOME环境变量即可。

编写测试java文件

[复制代码](javascript:void(0)😉

class Hello
{
}

class Welcome
{
}

[复制代码](javascript:void(0)😉

img

img

注意:编译的时候,对于文件名的大小写是不敏感的。

在Java的源文件中可以写入多个类,但是编译之后,每个类会单独生成一个字节码文件(class文件)。

当有很多的class文件的时候,给别人提供使用是不方便的,因此,可以将多个class文件进行打包,jar文件。

可以使用jar cvf xxx.jar Hello.class Welcome.class方式打包。

通常打包操作可通过IDE完成。

[复制代码](javascript:void(0)😉

class Hello
{
}

public class Welcome
{
}

[复制代码](javascript:void(0)😉

img

当在一个源文件中定义了一个public的类,那么这个源文件的文件名必须取名为这个public类的类名。java中的规定。
因此,在一个源文件中,有且只能有一个public的类。也可以没有public的类,那么文件名可以是任意类的类名或者是其它的名字。

img

img

编译的时候,可以没有main函数,但是要想执行,必须有main函数。否则执行错误。

另外,java解释器,解释执行的时候,加载的是一个类,而不是一个文件,不是welcome.class这个文件。而是Welcome这个类。

java解释器要加载这个类,因此,后面的这个类名是大小写相关的。

注意,main函数必须是public static void的。java Welcome加载类的过程为,首先根据这个名字找到对应的

class文件,即找到Welcome.class文件,然后jvm将该文件加载入内存的方法区(代码区)中,然后将class文件解

开,然后搜寻找到public static void的main函数,然后将该main函数加载到方法调用栈上进行执行。

img

第一次运行java Welcome没有报错,原因是,在Welcome.class目录下运行,能够找到对应文件。

第二次运行java Welcome报错,原因是,当前目录下没有Welcome.class文件了,且classpath环境变量没有配置,所以找不到类文件。

当定义了classpath之后,那么java解释器在加载一个类的时候,就会完全根据classpath定义的路径去搜索要加载的类。而不会去看是否当前目录下有这个class文件。

img

可以看到,java解释器加载类的时候,当定义了classpath的时候,是完全按照定义的classpath指定的路径去搜寻的,而不会在当前路径下查找了。即使当前路径下有这个类,也不会找到。
为了让当前路径下的类也能找到,那么classpath中添加当前路径‘.’即可。

为了配置的classpath永久生效,也需要配置到环境变量中去。

因此,需要配置两个环境变量:

path和classpath。

安装jdk的路径要注意: 不能带有中文路径或者是空格。

image-20221004165803557

安装过程中,先安装jdk,然后又会提示你安装jre,实际上这个jre完全可以不安装,因为前面安装的jdk已经包含了jre了。

jdk目录的介绍:

​ bin: 存放的是java的开发工具。

​ db : JDK7附带的一个轻量级的数据库,名字叫做Derby。

​ include :存放的调用系统资源的接口文件。java程序中向os调用的时候,需要的本地os接口文件。

​ jre : java运行环境

​ lib : 核心类库。

​ src.zip : java源代码

java.exe 启动java虚拟机解释并执行指定的class文件。

​ java工具的使用格式:

​ java 指定的class文件

javac.exe 启动java编译器对指定的java源文件进行编译。

编写第一个java的程序:

​ 第一步: 新建一个txt文件。把后缀名改成java。

​ 第二步: java 代码全部都是写到类上面的。也就是在java中,类是程序组织的最小单位。

​ 如何编写一个类:

​ 使用一个关键字class即可定义个类。

​ 格式:

​ class 类名{

​ } 备注: 大括号表示是一个类的范围,在类的范围之内都可以写代码,

第三步: 编写一个主方法。 主方法的写法是固定的,是一个程序的入口,代码从主方法开始执行

当直接双击一个可执行文件一闪而过就关闭了,那么一般说明,这个可执行文件需要一个控制台中来执行它。

如何启动java编译对java的源文件进行编译?

​ javac的使用格式:

​ javac java源文件。

编译的过程中我们就面临 的问题:每次编译的时候都需要写上java源文件的完整路径。 烦!!!

即需要在javac可执行文件的目录下,执行”javac java源文件完整路径”

image-20221004170158393

image-20221004170206872

这样是不好的,将源文件放到了javac的安装目录了,不好。乱。

image-20221004170232725

每次都需要写全路径,麻烦。

解决方案: 如果可以在任意的路径下都可以找到java的开发工具,那么该问题就解决了。

在控制台写一个可执行文件的文件名,然后能够执行的原理:

​ 在控制台写一个可执行文件的文件名,那么系统首先会在控制台当前路径下去搜索是否存在该文件,如果可以找到指定的文件,那么就执行该文件,如果找不到该文件,那么系统还会根据path的环境变量所保存的路径信息下去搜索是否有指定的文件,如果能找到,那么就执行该文件。

img

SystemRoot是Windows系统的根路径。

img

即这个目录。


posted @ 2022-12-09 20:00  Leo101018  阅读(284)  评论(0编辑  收藏  举报
返回顶部