黑马程序员技术交流社区

标题: EditPlus3的使用问题 [打印本页]

作者: 978677855    时间: 2016-2-25 17:50
标题: EditPlus3的使用问题
使用EditPlus3的时候,java文件名一定要和他的类名一致吗?我刚刚联系的时候,java文件名为hell.java,类名为Hell,结果就出现下图的情况;把类名改成hell之后就正常运行了,请问谁知道这是什么原因?小白一天请多指教,谢谢!
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\978677855\QQ\WinTemp\RichOle\B9V7]W7EHD3MNQU0CB{S41S.pngfile:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\978677855\QQ\WinTemp\RichOle\B9V7]W7EHD3MNQU0CB{S41S.png

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\978677855\QQ\WinTemp\RichOle\B9V7]W7EHD3MNQU0CB{S41S.png



B9V7]W7EHD3MNQU0CB{S41S.png (127.13 KB, 下载次数: 65)

B9V7]W7EHD3MNQU0CB{S41S.png

作者: zxycs    时间: 2016-2-25 22:11
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
       使用EditPlus3保存文件时,就相当于是在保存你写好的java文件,所以文件名一定要和他的类名一致。
      你在保存文件的时候将类名复制给文件名去保存,就可以正常运行
作者: 就是我    时间: 2016-2-25 23:04
在你点击ctrl+1时,系统会对你所写得文件进行编译
当你点击ctrl+2时,jvm对根据main函数对于该文件下的.class文件加载或执行
如果你输入的文件不同于类名,编译时根据文件名产生的同名.class文件,执行时jvm会把生成的.clas文件(字节码)当作是类来加载到方法区,但你的.class文件名又不是类名,肯定会查无此类,报错了
所以你输入不同于类的文件名时,是可以进行编译的,但在运行时就会报错"无法加载某类"
求给分,严重缺分

11.jpg (9.19 KB, 下载次数: 56)

11.jpg

作者: 978677855    时间: 2016-2-26 10:46
zxycs 发表于 2016-2-25 22:11
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
       使用EditPlu ...

嗯嗯,明白了!谢谢指教
作者: 978677855    时间: 2016-2-26 10:47
就是我 发表于 2016-2-25 23:04
在你点击ctrl+1时,系统会对你所写得文件进行编译
当你点击ctrl+2时,jvm对根据main函数对于该文件下的.class ...

有点明白了,谢谢指教
作者: 就是我    时间: 2016-2-26 11:08
明白了,说好的分呢?
作者: 978677855    时间: 2016-2-26 12:10
就是我 发表于 2016-2-26 11:08
明白了,说好的分呢?

不好意思,第一次发帖,不太会玩
作者: 978677855    时间: 2016-2-26 12:11
就是我 发表于 2016-2-26 11:08
明白了,说好的分呢?

不好意思,第一次发帖,不太会玩
作者: zxycs    时间: 2016-2-26 21:07
978677855 发表于 2016-2-26 10:46
嗯嗯,明白了!谢谢指教

说好的分呢?亲
作者: hpuie0703    时间: 2016-3-3 23:37
当.java文件类名与文件名不一致时,确实是不能运行.直接改成完全一样的,就可以运行了.
原因是这样的:
当按下ctrl+1时,等价于执行了javac 文件名.java命令,这时会生成一个类名.class文件;
当按下ctrl+2时,等价于执行了java 文件名命令(运行文件名.class文件),到这里就出问题了.
因为我们是在运行一个并不存在的.class文件,这是不可以的.
作者: wanmu    时间: 2016-3-5 23:23
新人小白一枚,亲测,一定要一致
作者: wx_abgyXgs1    时间: 2016-3-8 05:48
当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以 有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译 器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主要 public类提供支持,
作者: luomoss    时间: 2016-3-8 10:23
1.Java保存的文件名必须与类名一致; 2.如果文件中只有一个类,文件名必须与类名一致; 3.一个Java文件中只能有一个public类; 4.如果文件中不止一个类,文件名必须与public类名一致; 5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。
作者: 骷髅王子    时间: 2016-3-8 22:40
1.Java保存的文件名必须与类名一致;
2、你应该设置过EditPlus吧,查看一下有没有在设置上出问题
作者: 善毅    时间: 2016-3-9 13:02
当.java文件类名与文件名不一致时,确实是不能运行.直接改成完全一样的,就可以运行了.
原因是这样的:
当按下ctrl+1时,等价于执行了javac 文件名.java命令,这时会根据你的类名编译生成.class文件;
当按下ctrl+2时,等价于执行了java 文件名命令(运行文件名.class文件),到这里就出问题了.
作者: 13398379834    时间: 2016-3-10 18:38
好像是吧
作者: xiaobinghe    时间: 2016-3-10 23:14
本帖最后由 xiaobinghe 于 2016-3-10 23:19 编辑

理论上Java保存的文件名和类名可以不一致;
作者: xiaobinghe    时间: 2016-3-10 23:16
本帖最后由 xiaobinghe 于 2016-3-10 23:17 编辑

理论上类名和文件名可以是不一样的,但是在editplus和eclipse中都默认要一致,不然就会报错;
这样做的目的是为了方便用户查找和使用,并不和程序冲突;
谢谢,希望能帮到你!

作者: 278008379    时间: 2016-3-12 00:10
简单说:你去打电话订了外卖,是西红柿炒鸡蛋,而给你送餐的时候你跟人家要宫保鸡丁盖饭,人家能拿得出来吗?
作者: 914030919    时间: 2016-3-13 00:33
是的,文件名和类名必须一致,不然编译的时候找不到文件或和类名,程序就无法编译!
作者: hjh987099654    时间: 2016-3-17 17:23
必须相同,不然会找不到加载的之类。
作者: a7866443121    时间: 2016-3-19 22:36
必须一致,否则会报错。还得区分大小写,字符
作者: doublelixin    时间: 2016-3-23 23:06
类名和文件名要一致
作者: AAAheilong    时间: 2016-4-14 21:46
我认为应该改文件名,而不是类名
使用EditPlus3的时候,java文件名一定要和他的类名一致,因为这属于默认规则,没必要深究!
作者: pigdanny    时间: 2016-7-8 21:31
编译后的字节码文件是用类名命名的,运行时如果用源代码文件名的话就会报错:找不到该文件.所以最好源代码的文件名和类名要保持一致.
作者: Liangfwu    时间: 2016-8-10 22:46
用这个来写程序的话是要保持一至的名字——我觉得这也是和eclips一样的原理吧,就是当你写的类名不一样或者同一个包下有相同的类名时,会出现不知道要运行哪一个,所以就报错了,但是如果用的是NOTEPAD++就不一定,而且可以一个新文件下写多个类,在控制台运行时就输入相对应的类的名就行了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2