我在命令提示符下运行java程序。我在PATH系统变量中设置了“C:\ j2sdk1.4.2_09 \ bin”。然后我就可以编译并运行程序了。但是因为我需要设置mysql-connector我在“C:\”中设置了它MySQL的连接器的Java-5.1.10 \ MySQL的连接器的Java-5.1.5-bin.jar” CLASSPATH变量,但现在我能够编译程序,因为我运行程序,我得到“线程主java.lang.NoClassFoundDefError中的异常”。 这怎么样?任何人都可以详细说明这个吗?
答案 0 :(得分:5)
目前还不清楚你在这里问的是什么。你是说你改变了你的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运行时它可以从哪里加载类。
道歉,如果这完全偏离基础;如果是的话,你能澄清一下你的问题吗?
答案 1 :(得分:0)
同意上面的答案,因为我自己已经完成了这一百万次。你得到的例外几乎肯定与你的类路径有关,不包括“。”。它告诉Java将当前目录包含在类的死亡中。
似乎反直觉Java不会在搜索中自动包含当前目录,但只要您手动覆盖类路径,就必须包含它。
原因?如果未指定类路径,则使用默认值,包括“。”,这对您来说是透明的。
答案 2 :(得分:0)
在回答你的问题之前,请回答这个简单的问题:为什么我们需要PATH和CLASSPATH?
答案:
1)路径:您需要设置PATH来编译Java源代码,创建JAVA CLASS FILES和操作系统以在运行时加载类。
2) CLASSPATH: Java中的类路径是目录或目录列表的路径,ClassLoaders用它来查找和加载Java程序中的类。这由JVM使用,而不是由OS使用。 / p>
修改 PATH 变量(Windows系统环境变量),使其指向包含所有exe的bin dir,例如:java,javac等。在我的例子中,它是这样的: ; C:\ Program Files \ Java \ jre7 \ bin 。
可以使用CLASSPATH环境变量指定Classpath ,该变量不区分大小写,-cp或-classpath命令行选项或Java中JAR文件中manifest.mf文件中的Class-Path属性。
有关CLASSPATH的详细信息,请参阅此链接“http://javarevisited.blogspot.in/2011/01/how-classpath-work-in-java.html”