Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类路径变量是隐式的吗?_Java_Jvm_Classpath - Fatal编程技术网

Java 类路径变量是隐式的吗?

Java 类路径变量是隐式的吗?,java,jvm,classpath,Java,Jvm,Classpath,必须在命令行中添加classpath变量。 例如 我知道如果类路径存储在不同的变量中,那么它是必需的,但是由于类路径(变量)是Java虚拟机中的一个参数,它是否必须明确地添加到命令行中? 我面临一个问题,如果我不将CLASSPATH变量添加到命令行,我将得到NoClassDef。您的CLASSPATH变量可能包含通配符(*) 运行java-cp$CLASSPATH时,通配符会展开,但直接从环境变量读取类路径时不会展开。除此之外,CLASSPATH变量由Java launcher自动使用。您的CL

必须在命令行中添加classpath变量。 例如

我知道如果类路径存储在不同的变量中,那么它是必需的,但是由于类路径(变量)是Java虚拟机中的一个参数,它是否必须明确地添加到命令行中?
我面临一个问题,如果我不将CLASSPATH变量添加到命令行,我将得到NoClassDef。

您的
CLASSPATH
变量可能包含通配符(*)


运行
java-cp$CLASSPATH
时,通配符会展开,但直接从环境变量读取类路径时不会展开。除此之外,
CLASSPATH
变量由Java launcher自动使用。

您的
CLASSPATH
变量可能包含通配符(*)


运行
java-cp$CLASSPATH
时,通配符会展开,但直接从环境变量读取类路径时不会展开。除此之外,
CLASSPATH
变量由Java launcher自动使用。

在系统环境变量中设置它。如果不在CLASSPATH中添加所需的JAR,您将面临问题,因为JVM不知道在哪里可以找到该类。对类路径的一个很好的解释。在系统环境变量中设置它。如果不在类路径中添加所需的JAR,您将面临问题,因为JVM不知道在哪里可以找到类。很好地解释了类路径。谢谢。实际上,我没有导出在shell脚本中创建的类路径。由于哪个类路径不可用。您知道从环境变量读取通配符时,通配符不展开是否有特殊原因吗?@MarkusWeninger我指的是通过shell而不是VM进行展开。例如,如果我设置
CLASSPATH=myapp*.jar
JVM将无法识别
myapp-v1.0.jar
,但是如果我运行
java-cp$CLASSPATH
myapp*.jar
将通过shell扩展到
myapp-v1.0.jar
,这将正常工作。谢谢。实际上,我没有导出在shell脚本中创建的类路径。由于哪个类路径不可用。您知道从环境变量读取通配符时,通配符不展开是否有特殊原因吗?@MarkusWeninger我指的是通过shell而不是VM进行展开。例如,如果我设置
CLASSPATH=myapp*.jar
JVM将无法识别
myapp-v1.0.jar
,但是如果我运行
java-cp$CLASSPATH
myapp*.jar
将通过shell扩展到
myapp-v1.0.jar
,这将正常工作。
java -cp $CLASSPATH MyClass