繁体   English   中英

为什么Java在运行时需要classpath

[英]Why Java needs classpath at runtime

在Java中,我们在编译时设置类路径以编译Java文件,但是为什么我们需要在运行时设置类路径? JVM为什么需要classpath来运行.class文件的任何特定原因?

类路径上的文件提供了JVM需要运行的实际可执行代码(在Java .class文件中)。

在Java中,我们在编译时设置类路径以编译Java文件

我们要不要? 我不。

但是为什么我们需要在运行时设置类路径?

因此,JVM知道可以在哪里找到这些类。

我看到的原因之一是,如果出于某种原因需要将应用程序所需的库分散在多个安装点/驱动器/分区甚至文件夹中,则无法向JVM指定代码所在的位置。 作为一种解决方法,JVM可以遍历整个文件系统和索引内容,但是效率/速度如何?

干杯

通常,人们认为编译不需要独立就可以创建独立的应用程序。 但事实并非如此。

如果您的代码没有依赖项,则无需设置类路径。

您可能需要/想要在运行时包含-cp:

  1. 要指定您的类在运行时需要在哪里寻找第三方和用户定义的文件(* .jar,*。class,*。properties等)。

  2. 覆盖CLASSPATH环境变量所设置的内容。

CLASSPATH是Java虚拟机用于查找类文件(包括主类)的环境变量。

或者,您可以将-cp-class-path作为参数传递给JVM,以指定主类所依赖的类路径。

例如,

export CLASSPATH=/opt/javatv:/opt/mhp:/opt/main-class;
java MainClass

(要么)

java -cp /opt/javatv;/opt/mhp;/opt/main-class MainClass;

(要么)

java -class-path /opt/javatv;/opt/mhp;/opt/main-class MainClass;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM