Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用IntelliJ编译Java项目并在终端中运行(NoClassDefFoundError)_Java_Intellij Idea - Fatal编程技术网

如何使用IntelliJ编译Java项目并在终端中运行(NoClassDefFoundError)

如何使用IntelliJ编译Java项目并在终端中运行(NoClassDefFoundError),java,intellij-idea,Java,Intellij Idea,我喜欢IntelliJ,因为它的易用性和强大的IDE功能。但是,由于我的项目的性质,我希望在IntelliJ中构建完所有内容后,通过终端运行相关的.class文件。我的结构如下所示: out/ | |-production/ | | | |-AILab2/ | | | |-TTT/ | | |--Main.class | | |--Constants.class | | |--Deadline.class | | |--pipe| |

我喜欢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.Main),并且必须在父目录(包含TTT文件夹的目录)中调用Java

请放心:它总是这样工作的。对“它以前是这样工作的”的唯一解释是:你的类当时不在一个不同的包中


除此之外,您还必须了解如何在类路径中找到类。例如,从这里开始阅读

@GhostCat,我已将我的问题编辑为文本,而不是屏幕截图。而且,您的解决方案(或我对它的解释)不起作用:/。我已经展示了编辑中发生的事情。是的,我是,TTT和TTT3中的所有文件都有
包TTT
包装TTT3分别在它们中。是的,Main.java是TTT包中的一个文件。我已经更新了我的问题来说明这一点。谢谢。顺便提一下你提供的URL中的圆点消失了,因此如果不进一步编辑你的帖子,我不想修改它。也许你想自己改变它。
$ 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