关于java命令行在dos窗口下执行class文件时提示“找不到或无法加载类”问题

package com.jintao.javaarray;
public class JavaArray
{
      public static void main(String [] args)
     {
           int array[] = new int[10];

          int array1[];
           
           for(int a:array)
          {
                System.out.println(a);
          }
           
     }
}


在该源文件的根目录下面执行javac JavaArray.java命令后,确实生成了一个JavaArray.class,但是当我们回到dos,就在当前目录下面执行java JavaArray时,系统会给出提示,说无法加载类或者找不到,然后我确保系统的环境变量无误情况后,那就从源文件入手了,可以看到最上面的代码有一个package包,我想这是包的问题,于是我又回去dos执行java com.jintao.javaarray.JavaArray,还是失败,那么在编译时我们并没有考虑包的生成,但是也算是正常编译通过了,但是编译出来的类不能用,下面几种情况。


1,我们把加入包的那行代码注释掉,然后重新编译,然后运行正常输出,没有问题。


2.下面我们用另外一种编译方式来进行,这时需要把刚才注释掉的加入包那行代码还原,dos下执行javac -d . JavaArray.java(.表示在当前目录下面生成一个带有包名的类文件,所谓包在windows下是以文件夹的形式来表示的),不出所料,回到该源文件所在的根目录,发现里面生成了一个嵌套的文件夹,顺序依次是:com//jintao//javaarray//JavaArray.class,那么这时我们就在源文件根目录下dos界面执行java com.jintao.JavaArray成功了。


3.在源文件根目录下手动创建这些嵌套文件夹com//jintao//javaarray//然后把类复制进去,再执行也是可以通过的,不过这太过于愚蠢了,但是这说明了一个问题,java命令在执行类文件时对于包名,是检索文件夹进行的,也说明了,如果你写的类中有包,必须给出包名才能正常执行,java命令,和2中的命令所生成的类文件是一样的只不过是2中可以根据java类中的包名在相应目录下生成对应的文件夹。


你可能感兴趣的:(关于java命令行在dos窗口下执行class文件时提示“找不到或无法加载类”问题)