1. java源文件不必含有主类
有些java类确实是不需要主方法的。
主方法确实是程序的入口,但是有些类天生就是被用来使用的,如方法集合类,或者是描述一个对象的类。
另外一个java类确实可以包含多个class,而这些class之间可以没有任何联系,但是如果有一个class是public的话,那么这个java文件的名称就必须是这个class的名称。
java的原文件是.java文件,.class是java文件编译的产物,他不是给人看的,而是给jvm看的。
2. java 编译成功,运行class文件出现“找不到或无法加载主类”,什么原因
程序本身没错。原因可能有:
1、环境变量配置问题
解决办法:测试配置,在cmd下输入 java -version,如果有以下相似的输出,说明配置没问题
C:\Documents and Settings\Administrator>java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
2、编译错误。
你文件名要和类名相同。保存为Hello.java ,编译:javac Hello.java。
运行时不要加后缀 直接 java Hello
3. java编译通过,为什么运行却提示找不到或无法加载主类
入门就遇到这样的问题,环境变量按网上说的配好了,直接java 和 javac都有提示出来,说明没问题了,
做了一个简单java,放在e盘根目录下,在c:下操作javac该java文件成功了,但用java 该class时却提示“找不到或无法加载主类” ,忙活了半天,找了些资料,发现其实很简单,不是语句错误,是路径问题classpath的问题。
主要是以下两点要注意:
1、在classpath的最前面要加一个本目录路径,用.表示,由于后面还有java的dt和tools两个路径,所以.后要加;进行分隔表示。
2、更为重要的是,在cmd下运行javac 和java的时候,必须在该java文件的目录下运行,这样生成的class也在该目录下,java的时候也会第一个就在本目录下找class文件,就不 会提示找不到了。这个cmd运行路径由于一般不太注意,输入cmd就会直接到c:\个人文件夹下,而一般的java文件会用其它编写,放在选定的路径 下,这两个路径很少能主动重合,一运行当然找不到了,但是javac能认到,不知为什么java就提示找不到?这点有点奇怪。网上各种解决方法里很少注意 到其实就是这个小问题造成的找不到类,都想当然的以为是在java源文件路径下运行java,那当然就找不到基本问题所在了。
如果1、2都做了还是没变化,那就是该计算机改了环境变量后需要重新启动下让新的设置生效,重启下即可。
4. java程序编译通过但是运行时显示“找不到或无法加载主类 helloworld ” ,怎么解决
既然javac编译已经通过,这说明变量java-home已经配置的没有问题了。
(java-home对应的变量值为javac.exe所在的路径;一般是在安装路径下,例如c:Program FilesJavajdk1.7.0_45in)。
那第一种可能就是:问题就出在Path变量对应的变量值上或者是新建用户变量classpath上有问题,你重新配置一下。Path对应的变量值是在原来的变量值前面加上%Java_Home%。
第二种可能就是:你的环境变量都是正确的,只是你编译的java源文件中,主函数public static void main(String args[]){}没有写在main这个类中。
一个java源文件可以写很多类,编译的时候javac源文件之后,每个类生成一个class文件。你去运行的时候,并不一定是去java源文件名,而是去java主函数所在的那个类名。
第三种可能就是:像intopass说的那样,你在eclipse写的时候里面会有package,你把它删掉试试。