我喜欢IntelliJ,因为它的易用性和强大的集成开发环境功能。但是,由于我的项目的性质,我希望在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
发布于 2018-09-22 23:15:38
类的名称必须包含包(TTT.Main),并且您必须在父目录中调用Java,父目录包含TTT文件夹。
请放心:它总是这样工作的。对“它以前是这样工作的”的唯一解释是:您的类当时不在一个不同的包中!
除此之外,您还必须了解如何在类路径中找到类。例如,开始阅读这里的https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html。
https://stackoverflow.com/questions/52457194
复制相似问题