JAVA初学:错误: 找不到或无法加载主类 test
以上是报的错误。
1. 使用eclipse写了一个hello world程序。
在eclipse中执行起来并没有问题。
之后想试一下通过终端命令来执行:
//生成class文件 javac test.java //输出结果 java test
在第二步的时候报了上述错误。
2. 忽略了package影响。
-
在eclipse写的代码保存路径如下。
-
执行javac test.java会在此文件夹下生成class文件。
-
按照正常情况执行java test就会输出结果,但是却报了错。
查了下资料,说java中完整的类名应该是包名+类名。然后可以发现,在写代码的时候,有一个包名test。所以正确的执行方式应该是java test.test。
但是发现还是错误。
可以看到我们是在test目录下执行的该命令,java会以为路径是D:ceclipse-workspace estsrc est est est。(好吧,我不该把名字都取为test的)。
所以执行这个命令的时候,应该在src目录下来执行。
-
java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。 程序在运行的时候具体是如何确定.class文件位置的呢? 来看看Java解释器的运行过程吧:首先,找出环境变量CLASSPATH(可以通过操作系统来设置)。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径(例如,package fruit.Apple就变成为fruit/Apple或fruit/Apple或其他,这将取决于操作系统)。得到的路径会与CLASSPATH中的各个不同的根目录路径相连接以获得一个完整的目录路径,解释器就在这些目录中查找与你所需要的类名称相同的.class文件。(此外,解释器还会去查找某些涉及Java解释器所在位置的标准目录。) 所以在这里吗java寻找的就是classpath+package名