我喜欢IntelliJ,因为它易于使用且具有出色的IDE功能。但是,由于我的项目的性质,在IntelliJ中构建了所有内容之后,我想通过终端运行相关的.class文件。我的结构如下:
out/
|
|-production/
| |
| |-AILab2/
| |
| |-TTT/
| | |--Main.class
| | |--Constants.class
| | |--Deadline.class
| | |--pipe|
| | |--etc...
| |
| |-TTT3
| |--Constants.class
| |--Deadline.class
| |--etc...
src
|
|-TTT
| |--Main.java
| |--Constants.java
| |--Deadline.java
| |--etc...
|
|-TTT3
|--Constants.java
|--Deadline.java
|--etc...
进入终端运行时,请执行以下操作:
~/IdeaProjects/AILab2/out/production/AILab2/TTT$ java Main init verbose < pipe | java Main > pipe
Error: Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: TTT/Main (wrong name: Main)
Error: Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: TTT/Main (wrong name: Main)
我已经在网上搜索过,但我不知道此错误的原因。我以相同的方式运行了以前的项目,但是这次不起作用。感谢帮助。
编辑:将终端命令更改为包含TTT
会导致出现相同消息:
$ java TTT.Main init verbose < pipe | java TTT.Main > pipe
Error: Could not find or load main class TTT.Main
Caused by: java.lang.ClassNotFoundException: TTT.Main
Error: Could not find or load main class TTT.Main
Caused by: java.lang.ClassNotFoundException: TTT.Main
答案 0 :(得分:1)
该类的名称必须包含程序包(TTT.Main),并且您必须在父目录(包含TTT文件夹的目录)中调用Java。
请放心:它始终像这样工作。 “以前曾经这样工作”的唯一解释是:那时您的班级不在单独的程序包中!
除此之外,您还必须学习如何在类路径中找到类。例如,从这里https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html开始阅读。