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