CLASSPATH和PATH中的混淆

CLASSPATH和PATH中的混淆

问题描述:

我正在命令提示符下运行一个java程序。我已经在PATH系统变量中设置了“C:\ j2sdk1.4.2_09 \ bin”,然后我就可以编译并运行该程序。但是因为我需要设置mysql连接器,所以我在“C:\ mysql-connector-java-5.1.10 \ mysql-connector-java-5.1.5-bin.jar“CLASSPATH变量,但现在我能够编译程序,因为我运行程序我得到”异常在线程主要java。 lang.NoClassFoundDefError”。 这是怎么回事?有人可以详细说明这一点吗?CLASSPATH和PATH中的混淆

这是相当不清楚你在这里问什么。你是说你改变了你的CLASSPATH,现在无法找到班级?

要记住的一件事是,CLASSPATH默认情况下不包含当前目录。你必须添加它(.)如果你想让它在CLASSPATH中,例如:

set CLASSPATH=.;C:\mysql-connector-java-5.1.10\mysql-connector-java-5.1.5-bin.jar 

(请注意我把.;在那开始。)

PATH和CLASSPATH是完全无关的。 PATH告诉Windows在哪里找到可执行程序(并且隐含地包含当前目录),而不是给它一个明确的路径。 CLASSPATH告诉Java运行时它可以从哪里加载类。

道歉,如果这是完全脱离基地;如果是这样,你能否澄清你的问题?

+0

我们能不能添加路径和CLASSPATH都CLASSPATH? – Tanveer 2012-12-11 09:31:20

同意上面的答案,因为我自己做了这一百万次。你得到的异常几乎肯定与你的classpath没有包含“。”。它告诉Java将当前目录包含在类的死亡中。

Java不会自动在搜索中包含当前目录,但无论何时手动覆盖类路径,您都必须包含此内容。

的原因是什么?如果不指定类路径,则使用默认类路径,其中包含“。”,而且对您而言是透明的。

在回答你的问题之前,只想回答这个简单的问题:为什么我们需要PATH和CLASSPATH?

答:

1)PATH:您需要设置PATH编译Java源代码,创建Java类文件和操作系统在运行时加载的类。

2)CLASSPATH:类路径中的Java是路径,它使用的类加载器来查找和Java的program.This负载类由JVM而不是OS目录或目录的列表。

修改PATH变量(Windows系统环境变量),使其指向包含例如所有exe bin目录:Java中,javac的等在我的情况是这样的:; C:\ Program Files文件\ Java \ jre7 \ bin

类路径可使用CLASSPATH环境变量这是不区分大小写,-cp或-classpath命令行选项或在Java中的JAR文件的内部MANIFEST.MF文件类路径属性来指定。

对于详细信息,请参阅此链接“http://javarevisited.blogspot.in/2011/01/how-classpath-work-in-java.html