前言:classptath可能让人觉得很基础的东西,当我碰到问题时,我才发现,当时学习过程中基础打得不扎实。现在我将还原我出错的过程,以及自己所得。
文件目录:/home/hadoop/work/java
环境变量:CLASSPATH=.:${JAVA_HOME}/lib
- 第一步:javac -d . PackageDemo01.java,-d .
在当前目录下生成存放class文件的目录,目录结构如下所示。工作目录(/home/hadoop/work/java)
—-PackageDemo01.java
—-/orgPackageDemo01.classm
第二步:java PackageDemo01 工作目录同上
第三步:java org.com.pack.PackageDemo01 工作目录同上
第四步:cd /home/hadoop/work/java/org/com/pack
java PackageDemo01
第五步:cd /home/hadoop/work/java/org/com/pack
org.com.pack.PackageDemo01
总结:
真正的类名是org.com.pack.PackageDemo01而PackageDemo01。正确的执行带包的java文件,二要保证java执行后面的那个类文件带上包的路径(full name of the class) ;一要保证从classpath中某个路径出发沿着包的路径最终能到达生成的那个类。 **Error: Could not find or load main class HelloWorld** 进入了cd /home/hadoop/work/java/org/com/pack提示**Error**。因为寻找的就时org/com/pack/PackageDemo01.class,我们现在已经在org/com/pack/目录下了,那么从当前目录下. 开始找并找不到该类。 方案一:所以我们cd到/home/hadoop/work/java就可以了,如第三步。java org.com.pack.PackageDemo01. 方案二:cd /home/hadoop/work/ java -cp ./java:. org.com.pack.PackageDemo01 其实就是路径搜索问题,而且要加上(.)