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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (156)

我喜欢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)
$ 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
提问于
用户回答回答于

类的名称必须包含包(TTT.Main),并且必须在父目录中调用Java,该目录包含TTT文件夹

请放心:它一直都是这样的。“之前就像这样工作”的唯一解释是:你的课程不是一个独特的包装!

除此之外,还必须了解如何在类路径中找到类。例如,请阅读https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

扫码关注云+社区

领取腾讯云代金券