当前位置: 首页 > 工具软件 > GNU Classpath > 使用案例 >

ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

邹禄
2023-12-01

我有错误

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

我也有同样的错误。我还应该看看哪里?这一定是配置问题。

多谢

cyberciti.biz/faq/set-environment-variable-linux

你想把.class从头到尾丢掉。只要键入…

java -cp . myfirstjavaprog

我很沮丧,没有发现这一点。

我们中最优秀的人也会遇到。

我强烈建议去掉classpath环境变量,或者至少去掉JRE/JDK。

除非另有规定,否则"."隐含在类路径中。自从Java 1.3以来,Java已经足够聪明,可以根据JavaC/Java可执行文件的执行路径找到自己的运行库和库。从那时起,在类路径上指定那些内容是多余的,如果不是完全错误的话。当然,.../lib是不正确的,因为那里只有jar,没有类,如果没有单独和明确地命名,就不会从类路径中提取它们。

现代javas足够聪明,当您站在类路径的根目录中时,只需键入java,它就可以工作™。

你说得对,问题是当我尝试编译任何导入Swing组件的东西时,它给出了完全相同的错误。尽管helloworld.java示例很好…这似乎很奇怪。

哦。。。注意Windows默认情况下是用一个严重瘫痪的Java来运行的,可执行文件位于Windows系统类路径中。请在DOS提示符下做"Java版本",看看你正在运行的Java版本是否是你想要的版本!

同样的事情可以说是Ubuntu;因为它与GNU Java(至少是我见过的Ubuntu系统的两个系统)一起运行,而不是Sun的Java。K,它不是"严重残疾"-但它不是太阳的爪哇。

我在B/C上投票,关于"在谷歌上设置Java类路径"的东西不多。我错认为你还需要设置类路径…但我错了。

那爪哇之家呢…是否仍需要设置该路径变量?

@特雷弗:有一些工具很喜欢看它,我好像还记得有汤姆猫和蚂蚁在其中。但即使是那些没有的人,在"正常"的情况下,你也不需要它。

使用

sudo update-java-alternatives -s java-6-openjdk

它设置了很多类路径的东西。

你在把苹果和桔子混在一起。命令行上的原始Java或JavaC调用需要一个类路径来知道它可以访问它的类。当你奔跑

java -cp pathelement1:pathelement2... MyClass

您给Java提供查找可运行类的位置列表。它不会在其他地方看到,包括".",除非你告诉它。所以"classpath"对你没有帮助,除非你跑

java -cp $CLASSPATH MyClass

换句话说,它只是一个快捷方式,可以继续重新输入类路径。

许多程序被配置为使用JavaJHOST,但最终运行Java程序只需要配置的类路径和Java路径(它们通过JavaJHOLD变量找到,所以您仍然需要它来处理像Ant之类的东西,但它的概念仍然只是一个快捷方式)。

您的路径是系统查找二进制文件的路径。如果Java不在您的路径上(类型"Java"),它将显示您的路径(如果有的话,Java)。运行/完全/路径/to/Java与运行"Java"相同,并使系统在路径变量中找到二进制。

不,我认为是类路径环境变量被忽略了。

正确的方法是在编译和运行时使用-classpath选项。为每个项目设置。你眼前的证据告诉你是这样的。

为什么类路径被忽略?几个原因:

这是一个Java 1伪品,已经失宠了。

JVM不能保证您已经将其设置为环境变量。

IDE有自己的需求,所以它们不依赖于它。

JavaEE应用服务器有他们自己的要求,所以他们不依赖它。

每次都必须给出整个路径,因为每个项目都可能不同。一旦你通过了"你好,世界",你会发现你自己正在为它编写脚本,或者使用Ant和Maven这样的工具来帮助你为你的项目设置类路径。

这是个坏主意。因为每次他都要全力以赴

为什么类路径环境变量被忽略?

@拉克沙曼-错。他必须学习如何以一种适合未来项目的方式来完成它,这种方式不太可能在命令行上编译和运行。

这个答案像金子。然而,DOS的人是被拧死的。255个字符的命令行。再次感谢,比尔!

关键是,一旦通过"hello,world"和教程,就没有人使用命令shell来编译或运行任何有意义的东西。这几乎不是你想要解决的问题。桌面应用程序使用脚本和Ant;部署的应用程序使用内置的约定。如果它这么大,Java早在几年前就已经绝迹了。

好吧,我找错地方了。原来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

类路径可以类似地设置

已经设置了这些变量,但出于某种原因它们被忽略了。我一定有语法问题。

链接不再工作..考虑更新..

 类似资料: