Setting up java classpath and java_home correctly in Ubuntu
我有错误
Exception in thread"main" java.lang.NoClassDefFoundError:
当我尝试在Ubuntu上运行编译类时。我使用的是一个非常简单的helloworld示例,互联网上已有数百万的响应表明我的classpath和java_home变量设置错误。
但是,我已经将etc/environment编辑为正确的文件夹以及当前文件夹:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun/"
CLASSPATH=".:/usr/lib/jvm/java-1.5.0-sun/lib"
当我输入set命令时,它们就会出现。在任何情况下,即使我手动使用
sudo java -cp . myfirstjavaprog.class
我也有同样的错误。我还应该看看哪里?这一定是配置问题。
多谢
你想把.class从头到尾丢掉。只要键入…
1 | java -cp . myfirstjavaprog |
我强烈建议去掉classpath环境变量,或者至少去掉JRE/JDK。
除非另有规定,否则
现代javas足够聪明,当您站在类路径的根目录中时,只需键入
使用
1 | sudo update-java-alternatives -s java-6-openjdk |
它设置了很多类路径的东西。
你在把苹果和桔子混在一起。命令行上的原始Java或JavaC调用需要一个类路径来知道它可以访问它的类。当你奔跑
1 | java -cp pathelement1:pathelement2... MyClass |
您给Java提供查找可运行类的位置列表。它不会在其他地方看到,包括".",除非你告诉它。所以"classpath"对你没有帮助,除非你跑
1 | java -cp $CLASSPATH MyClass |
换句话说,它只是一个快捷方式,可以继续重新输入类路径。
许多程序被配置为使用JavaJHOST,但最终运行Java程序只需要配置的类路径和Java路径(它们通过JavaJHOLD变量找到,所以您仍然需要它来处理像Ant之类的东西,但它的概念仍然只是一个快捷方式)。
您的路径是系统查找二进制文件的路径。如果Java不在您的路径上(类型"Java"),它将显示您的路径(如果有的话,Java)。运行/完全/路径/to/Java与运行"Java"相同,并使系统在路径变量中找到二进制。
不,我认为是类路径环境变量被忽略了。
正确的方法是在编译和运行时使用-classpath选项。为每个项目设置。你眼前的证据告诉你是这样的。
为什么类路径被忽略?几个原因:
好吧,我找错地方了。原来Java是好的,我是两个单独的问题得到相同错误的受害者。
我最初试图从Java网站上运行一个Swing实例,但我没有注意到它有一个包定义。我已经设置了正确的文件夹结构,现在运行正常。
当我尝试运行HelloWorld示例时,不小心包含了.class扩展名。
这两个问题都给了我classNotFound错误。
非常感谢你的帮助。
我强烈建议你花些时间看太阳教程。它将帮助你以后-阶级道路是臭名昭著的麻烦制造者。
http://java.sun.com/docs/books/tutorial/getstarted/toc.html网站
对于设置java_home变量,以下是说明。
http://luckydev07.blogspot.com/2009/08/setting-javahome-in-ubuntu-linux.html
和
类路径可以类似地设置