A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 978677855 中级黑马   /  2016-2-25 17:50  /  8430 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
使用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, 下载次数: 42)

B9V7]W7EHD3MNQU0CB{S41S.png

25 个回复

倒序浏览
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
       使用EditPlus3保存文件时,就相当于是在保存你写好的java文件,所以文件名一定要和他的类名一致。
      你在保存文件的时候将类名复制给文件名去保存,就可以正常运行

评分

参与人数 1黑马币 +1 收起 理由
978677855 + 1 很给力!

查看全部评分

回复 使用道具 举报
在你点击ctrl+1时,系统会对你所写得文件进行编译
当你点击ctrl+2时,jvm对根据main函数对于该文件下的.class文件加载或执行
如果你输入的文件不同于类名,编译时根据文件名产生的同名.class文件,执行时jvm会把生成的.clas文件(字节码)当作是类来加载到方法区,但你的.class文件名又不是类名,肯定会查无此类,报错了
所以你输入不同于类的文件名时,是可以进行编译的,但在运行时就会报错"无法加载某类"
求给分,严重缺分

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

11.jpg

评分

参与人数 1黑马币 +1 收起 理由
978677855 + 1 很给力!

查看全部评分

回复 使用道具 举报
zxycs 发表于 2016-2-25 22:11
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
       使用EditPlu ...

嗯嗯,明白了!谢谢指教
回复 使用道具 举报
就是我 发表于 2016-2-25 23:04
在你点击ctrl+1时,系统会对你所写得文件进行编译
当你点击ctrl+2时,jvm对根据main函数对于该文件下的.class ...

有点明白了,谢谢指教
回复 使用道具 举报
就是我 来自手机 中级黑马 2016-2-26 11:08:22
地板
明白了,说好的分呢?

评分

参与人数 1黑马币 +1 收起 理由
978677855 + 1 很给力!

查看全部评分

回复 使用道具 举报
就是我 发表于 2016-2-26 11:08
明白了,说好的分呢?

不好意思,第一次发帖,不太会玩
回复 使用道具 举报
就是我 发表于 2016-2-26 11:08
明白了,说好的分呢?

不好意思,第一次发帖,不太会玩
回复 使用道具 举报
zxycs 中级黑马 2016-2-26 21:07:49
9#
978677855 发表于 2016-2-26 10:46
嗯嗯,明白了!谢谢指教

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

理论上Java保存的文件名和类名可以不一致;
回复 使用道具 举报
本帖最后由 xiaobinghe 于 2016-3-10 23:17 编辑

理论上类名和文件名可以是不一样的,但是在editplus和eclipse中都默认要一致,不然就会报错;
这样做的目的是为了方便用户查找和使用,并不和程序冲突;
谢谢,希望能帮到你!
回复 使用道具 举报
简单说:你去打电话订了外卖,是西红柿炒鸡蛋,而给你送餐的时候你跟人家要宫保鸡丁盖饭,人家能拿得出来吗?
回复 使用道具 举报
是的,文件名和类名必须一致,不然编译的时候找不到文件或和类名,程序就无法编译!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马