[求助]关于 cmd 命令运行时发现错误(已加 classpath): 找不到或无法加载主类 Main.class 原因: Java .lang.ClassNotFoundException: Main.class

2019-10-01 20:24:01 +08:00
 linmaoxe2v

小弟下了个 java,打算学点皮毛,在 eclipse 编译执行顺利,但突然发现 在 windows cmd 命令下 java 执行一个随便一个超级简单的 class,都不行 classpath 不论是手动环境变量设置,还是 cmd 加参数设置 classpath,都不行,试了绝对路径和相对路径都不行,我要抓了。 java 内容,就简单一句: public class Main { public static void main(String[] args) { System.out.println(1); } }

然后 cmd 命令在其路径下(该路径下已经 javac 编译出 Main.class 文件了) E:\Users\linmao\eclipse-workspace\hello\src>java -classpath ".;" Main.class 错误: 找不到或无法加载主类 Main.class 原因: java.lang.ClassNotFoundException: Main.class

绝对路径和相对路径都试过了

有没有大神,告诉怎么 debug,我不知道这个怎么 debug,求助,困扰了很久了,脑子都秀逗了

4321 次点击
所在节点    Java
15 条回复
avk458
2019-10-01 20:38:11 +08:00
编译过了?
linmaoxe2v
2019-10-01 20:42:08 +08:00
@avk458 在 eclipse 编译通过并执行成功了,然后我是在 cmd 里切到这个路径下,cmd 命令 java 运行这个 class 文件,发现不行。关键我还带了 classpath,也不行。我也觉得想不通
QiuSe
2019-10-01 20:54:35 +08:00
你可能带 package 了,编译的时候要 -d . XXX.java;
linmaoxe2v
2019-10-01 22:05:48 +08:00
@QiuSe 我试了下,还是不行
java -classpath ".;" Main.class -d Main.java
错误: 找不到或无法加载主类 Main.class
原因: java.lang.ClassNotFoundException: Main.class


你们这种一般都怎么定位 debug 呀?我一点头绪都没
linmaoxe2v
2019-10-01 22:09:43 +08:00
@QiuSe java -classpath "." Main.class -d . Main.java, 也试了,也不行哈
imzcg
2019-10-01 22:16:20 +08:00
???谁教你的
🤔
javac *.java
java *
kokutou
2019-10-01 22:25:55 +08:00
我记得都是要先 javac,然后 java 的啊。。。
maokabc
2019-10-01 22:36:15 +08:00
明显的,运行不要加.class 后缀
linmaoxe2v
2019-10-01 23:07:57 +08:00
@imzcg 我描述清楚,我拿的是 eclipse 编译成功也执行 class 成功的 class 文件。也就是 eclipse 上编译成功后并执行的 Main.class 文件,手动去执行的时候,发现不行
linmaoxe2v
2019-10-01 23:08:27 +08:00
@kokutou 我没描述清楚,我拿的是 eclipse 编译成功也执行 class 成功的 class 文件。也就是 eclipse 上编译成功后并执行的 Main.class 文件,手动 cmd 去执行的时候,发现不行
linmaoxe2v
2019-10-01 23:10:43 +08:00
@maokabc 你说的对,是我没理解透 java,去掉后缀 class 后,就成功了,让你见笑了哈
aLazarus
2019-10-01 23:15:15 +08:00
java 命令是根据.这个符号来表示目录结构的
所以如果你用 java main.class,他会去寻找一个叫做 java 的 package 中叫做 class 的文件
linmaoxe2v
2019-10-02 00:22:13 +08:00
@aLazarus 嗯嗯,领教了哈,之前没理解哈,以为就是像 Python *.py 这种,让大家见笑了哈
Aruforce
2019-10-02 14:35:46 +08:00
jar 包 META-INF 文件夹下有个 M 开头的文件 里面需要指定 main class 你可以看下 jar 规范… 楼上几个真逗…
aLazarus
2019-10-02 17:38:35 +08:00
@Aruforce #14 manifest.mf

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/605913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX