Java运行报错:Error: Could not find or load main class

【问题描述】

      用户root在/root/Exercise文件夹中创建HelloWorld.java 文件,代码如下:


      将该文件编译、运行如下:


      编译HelloWorld.java生成字节码文件HelloWorld.class,运行HelloWorld.class报错:Error: Could not find or load main class。


【原因分析】

      当前目录是.class文件所在目录,要运行.class字节码文件,需要将当前目录加入系统变量CLASSPATH,系统才能找到当前目录下的Java类。


【解决方案】

      第一步:将/etc下的profile文件末尾的CLASSPATH系统变量最前面加入.:,. 代表当前路径。

      原来的/etc/profie文件中的CLASSPATH为:  

      CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar。

      增加后的CLASSPATH为:CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

      第二步:命令行输入source /etc/profie,使/etc/profile中的系统变量生效,即可运行。

      注意:可以修改系统变量的前提是当前用户为root。在命令行输入source /etc/profie,系统变量只是临时生效,关闭Terminal,系统变量即恢复原状,因为系统变量是在系统启动时加载,所以,本次改变系统变量只有在下次系统重启时才会自动加载,才不用再输入source /etc/profie。

      程序运行结果如下:


已标记关键词 清除标记
我在Windows10上安装了Hadoop 2.9.2 在hadoop-env.cmd中修改了 set JAVA_HOME=C://PROGRA~1/java/jdk1.8.0_191 set HADOOP_PREFIX=E://hadoop-2.9.2 执行Hadoop命令的时候出现奇怪的情况 情况1: 直接执行hadoop命令: ``` E:\hadoop-2.9.2\bin>hadoop Usage: hadoop [--config confdir] [--loglevel loglevel] COMMAND where COMMAND is one of: fs run a generic filesystem user client version print the version jar <jar> run a jar file note: please use "yarn jar" to launch YARN applications, not this command. checknative [-a|-h] check native hadoop and compression libraries availability distcp <srcurl> <desturl> copy file or directories recursively archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive classpath prints the class path needed to get the Hadoop jar and the required libraries credential interact with credential providers key manage keys via the KeyProvider daemonlog get/set the log level for each daemon or CLASSNAME run the class named CLASSNAME Most commands print help when invoked w/o parameters. ``` 可以正常执行命令 情况二: 执行hadoop classpath ``` E:\hadoop-2.9.2\bin>hadoop classpath E:\hadoop-2.9.2\etc\hadoop;E:\hadoop-2.9.2\share\hadoop\common\lib\*;E:\hadoop-2.9.2\share\hadoop\common\*;E:\hadoop-2.9.2\share\hadoop\hdfs;E:\hadoop-2.9.2\share\hadoop\hdfs\lib\*;E:\hadoop-2.9.2\share\hadoop\hdfs\*;E:\hadoop-2.9.2\share\hadoop\yarn;E:\hadoop-2.9.2\share\hadoop\yarn\lib\*;E:\hadoop-2.9.2\share\hadoop\yarn\*;E:\hadoop-2.9.2\share\hadoop\mapreduce\lib\*;E:\hadoop-2.9.2\share\hadoop\mapreduce\* ``` 可以正常显示所有的classpath 情况三: **执行hadoop version --出错了** ``` E:\hadoop-2.9.2\bin>hadoop version Error: Could not find or load main class PC ``` 这个就出错了 我查了一些资料,说是classpath不正确,但是我看classpath的路径确实是我安装hadoop的路径,请问各位大神有没有碰到过类似情况的?麻烦分享一下,谢谢。
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页