Java类路径
编译和运行Java程序。
想要运行com.sample.app包下的Main.java文件。
FQCN(全限定类名:Fully Qualified Class Name)为com.sample.app.Main。
编译
在使用 $ cd 命令切换到存放 Main.java 文件的目录后,执行 $ javac 命令。
$ javac Main.java
进行
要执行通过编译生成的类文件(Main.class),需要执行$ java命令。
$ java com.sample.app.Main
$ java指令需要指定类名(FQCN)
发放
考虑分发Java程序。所需的东西有以下两个。
-
- コンパイルしたクラスファイル(物理的なデータ)
main()を持つクラス名(どのクラスかという情報)
通常情况下,程序不仅仅由Main.java这个文件组成,还会使用多个类和库等。因此,需要将这些编译后的类文件等全部打包成JAR格式的归档文件来进行分发。
main()是程序的起点,也被称为入口点。java命令需要指定包含main()的类名(FQCN)。
将其转换为JAR文件时,还有一种方法是在MANIFEST.MF文件中记录入口点。
当执行FQCN时,JVM(Java虚拟机)会从指定的FQCN类的main()方法开始执行程序,但在main()方法中使用的其他文件和类需要在类路径中指定。JVM无法找到类文件存放在类路径之外的位置。
课程路径
クラスパスはJVMが高速に目的のクラスファイルを検索するためのヒントとして利用される。具体的には、クラスローダは、クラスパスに指定されたパスからクラスファイルを探し出す。
クラスパスには、フォルダやJarファイルが指定可能。
クラスローダは、クラスパスに含まれるJARファイルの中までは検索しない。そのため、JARファイル内を指定したい場合は、JARファイル自体をクラスパスに指定する必要がある。
クラスパスに指定したいクラスがデフォルトパッケージではなく、特定のパッケージに属している場合、クラスローダはクラスパスを基準位置として、パッケージをフォルダ階層とみなして検索を行う。具体的には、C:¥aaaをクラスパスに指定し、com.sample.appパッケージのbbb.classを検索させたい場合、bbb.classはC:¥aaa¥com¥sample¥appフォルダに配置する必要がある。