【问题标题】:same package, different directories同一个包,不同的目录
【发布时间】:2012-11-20 15:57:43
【问题描述】:

在我的proj3 目录中,我有一个文件夹gui 和一个文件夹foogui 中的文件属于package foo。 使用 gmake,一切都会编译文件,但是当我尝试在调用 gui.Displayfoo 中执行 java foo.Main(主方法)时,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: foo/Display
 at foo.Main.main(Main.java:45)
Caused by: java.lang.ClassNotFoundException: foo.Display

我正在从 proj3 目录编译。我将./gui/ 添加到我的CLASSPATH 中,它现在具有.:./gui/ 以及其他用途。

感谢任何帮助。

【问题讨论】:

  • import 需要上课吗?
  • java foo.Main 为了找到Main,你是从foo 目录执行java 命令吗?
  • @user1870638 Display 属于同一个包,所以我认为我不需要导入。不幸的是,在那里拥有一个也不能解决问题。 @AndrewThompson Mainpackage foo 中的一个类,它具有 main 方法。要运行我的程序,在终端中的 proj3 目录中,我输入:java foo.Main(我不相信 foo.Main 会在 foo 目录中工作。)

标签: java package classpath runtime-error noclassdeffounderror


【解决方案1】:

如果 gui 中的文件属于 foo 包。这些文件也应该移动到文件夹 foo 中。

【讨论】:

  • 它们确实存在于文件夹gui 中。我的文件夹gui 与文件夹foo 处于同一级别。我尝试在foo 中添加gui,但效果并不好。
  • “但效果并没有更好。” 在这种情况下,您遇到了什么确切错误?如果源文件在同一个包中,最好将它们存储在 same 目录中。
  • 好吧,如果我在foo 文件夹中有确切的文件,那当然可以。当我的意思是“没有工作”更好时,就是将整个文件夹 gui 放在 foo 中。我实际上得到了同样的错误。
  • 理想情况下,我希望在gui 文件和foo 文件(如文件夹)之间进行某种分离。但是gui文件仍然需要属于package foo.
【解决方案2】:

将 gui.Display 移动到包 foo 中

【讨论】:

  • gui.Display 确实属于包 foo。如果我将文件 gui.Display 移动到 foo 文件夹中,它肯定会起作用,但我想要某种分离。
猜你喜欢
  • 2010-12-25
  • 2014-01-05
  • 1970-01-01
  • 2017-07-12
  • 2012-12-31
  • 1970-01-01
  • 2018-06-02
  • 2012-07-10
  • 2020-04-29
相关资源
最近更新 更多