为什么会说起Java程序运行这个话题呢?
按理说我写了这么久的Java程序,应该对Java程序运行的流程了如指掌才是,但其实并不是。
所以写这篇文章就是来梳理一下Java程序的运行过程。
1. 加载运行之classpath

根据上图可以看出来程序是在/Users/ray/workspace/knowjava/这个文件夹下运行的。所以你的test.txt应该放在这个文件夹下,程序才能找到。
那么程序为什么会在这个文件夹下运行呢?
首先我们编写的代码是存放在.java为后缀的文件里的,想要运行的话,必须先编译成.class文件。然后将class文件加载到JVM中执行。
首先执行某个class文件是使用java命令,比如 java com.company.knowjava.JavaRunProcess(这里一定要带上包名,因为这才是一个类的全称,就跟import 的时候是一样的), 这个命令就可以运行JavaRunProcess这个类,但这个命令并不是总有效。
这是因为java 命令去寻找加载类的信息的时候,是从classpath中寻找的。一般来说我们在装Java的时候会设定classpath,一般是.;$JAVA_HOME/lib/tools.jar,前面有一个点表示当前目录,很显然如果当前目录没有这个class文件的话,是找不到对应的类的。
java命令有一个参数可以指定classpath, 在指定classpath中搜寻对应的class文件,并且将其加载运行。
所以当IDE帮你执行的时候,它们都会在项目根目录下面执行类似下面的命令。
java -classpath "/Users/ray/workspace/knowjava/target/classes/" com.company.knowjava.JavaRunProcess
这样,你的程序就从项目根目录里跑起来了。
2. 加载运行之类加载
这一部分之后写
网友评论