回应模式 - No.61935230


No.61935230 - 技术宅


无标题无名氏No.61935230 只看PO

2024-04-06(六)19:57:24 ID:MK1koCU 回应

JAVA 文件运行问题,为什么直接在文件夹里运行 java xxx 行不通呢?








文件夹结构是这样的:AAA 目录下有个 bbb.java 文件,bbb.java 文件里开头有一句是package AAA

在 AAA 目录里执行 javac bbb.java 获得 bbb.class

在 AAA 目录下执行 java bbb 或者 java -cp . bbb 都无法运行 bbb 文件,这两个方法有同样的输出,输出都为 Error: Could not find or load main class AAA Caused by: java.lang.NoClassDefFoundError: AAA/bbb (wrong name: bbb)

但是如果在 AAA 目录的父目录里执行:java AAA.bbb 就能正常运行 bbb 且看到输入了,这是为什么???

Tips无名氏No.9999999

2099-01-01 00:00:01 ID: Tips

(  ;´Д`  )说谁肥人呢

无标题无名氏No.61935560

2024-04-06(六)20:24:40 ID: 83YvGLK

jp

无标题无名氏No.61935567

2024-04-06(六)20:25:05 ID: MK1koCU (PO主)

>>No.61935560
错饼了|∀` )

无标题无名氏No.61936185

2024-04-06(六)21:13:05 ID: UGJr5em

非要在AAA目录下执行的话:
要么,去掉package AAA
要么java -cp ../ AAA.bbb

无标题无名氏No.61936260

2024-04-06(六)21:18:56 ID: CzzTJVo

因为Java(指java.exe)的代码就是这样写的啊( ゚∀。)
你都手动指定classpath了

无标题无名氏No.61936549

2024-04-06(六)21:39:30 ID: MK1koCU (PO主)

>>No.61936185
啊那个 package 那一行是可以去掉的啊?是创建了文件夹和文件夹里的文件后 vscode 自动加的,我还以为必须得有那一行呢。。
谢谢,是JAVA初学者哒

无标题无名氏No.61936585

2024-04-06(六)21:41:26 ID: MK1koCU (PO主)

>>No.61936260
哦哦谢谢,对JAVA不熟,刚接触。。
不过 exe 不是windows上可执行文件吗?如果不是windows那生成的可执行文件也被称作是exe吗?

无标题无名氏No.61936835

2024-04-06(六)21:59:38 ID: mPzvTJS

>>No.61936585
exe就是个文件后缀,java.exe是有这么个文件在jdk的( ´_っ`)

感觉po就跟刚接触电脑没多久的计算机专业大学生似的

无标题无名氏No.61937463

2024-04-06(六)22:42:07 ID: CzzTJVo

>>No.61936585
不要想那么多,我只是假定你用的是Windows,其他平台的可执行文件一般是没有后缀的,具体可以参考posix 文件系统标准( ゚∀。)

初学的话不要考虑那么多,编程语言本质上就是一套标准,这些都是在标准里面定义好的,你就当作不这样做一定会出错就是了