2013-05-04 93 views
-3

我被给了一大块未完成的代码,我的任务是完成它。然而,我的讲师告诉我原始的未完成的代码应该运行,但它没有。我将它们编入.class文件,但是当我输入“java的DirectoryLister驱动程序GUI”,我得到运行java程序错误“线程”main“中的异常”java.lang.NoClassDefFoundError:Driver“

http://imgur.com/cuN9Ea8 

我完全新到Java,我只是以往的经验是C. 我编过这三个文件GUI.java, directoryLister.java, and Driver.java

javac GUI.java DirectoryLister.java Driver.java 

在一起,现在我在同一目录中有三个.class文件,但是当我做

java DirectoryLister Driver GUI 

我得到上述错误。帮帮我!

+0

可以请你发布完整的堆栈跟踪 – Satya 2013-05-04 03:01:53

+0

我不知道这意味着什么...... Thread.currentThread()。的getStackTrace()是正确的轨道上? 但我只是坚持在我的代码中的某个地方? – 2013-05-04 03:05:10

+0

你能否粘贴所有错误 – Satya 2013-05-04 03:06:02

回答

2

当您运行java时,您必须为其提供一个类才能运行,而不是三个。该类将执行main方法。您必须从编译类的根目录运行java,并且必须使用完全限定的类名称(即包含程序包)。

例如,如果您有源文件夹src,其中包含源文件./a/b/C.java,则该类将编译为src/a/b/C.class。然后你会确定你在src并运行java a.b.C

+0

主要方法是在driver.class中,当我“java driver”出现同样的错误时 http://imgur.com/G3fciJw – 2013-05-04 03:10:06

+0

@JeffreyShin:所有的Java标识符区分大小写。如果你的类是'Driver',那么你需要使用'java driver'而不是'java driver'。但似乎你有另一个问题。你可以显示“驱动程序”的第一位吗?它看起来像在'directoryLister.template'包中声明的,但是你正在编译并运行它,就好像它没有包一样。您可能需要将其放在'directoryLister/template/Driver.java'路径中,并使用'java directoryLister.template.Driver'运行它。 – 2013-05-04 03:10:55

+0

http://imgur.com/7eQQHLm – 2013-05-04 03:50:07

1

从这些错误看来它是一个包问题。

首先,您不能在多个文件上运行java,因为java会将后者名称作为命令行参数传递。

其次,在DirectoryLister.java的顶部,你应该看到

package directoryLister.template; 

这意味着完全合格的名称的Java类的directoryLister.template.DirectoryLister。完全限定名基本上是完整的类名,包括它所在的包。包是文件系统上同一目录中的类的分组。

java的设置方式,可以从任何工作目录编译java源文件。然而,在一个类文件运行java是非常严格的:

  • 如果源文件是在包foo.bar,类文件所在的目录必须叫做foo /酒吧/。
  • java必须从包层次结构的根目录运行。如果一个类文件位于myjavafiles/foo/bar /中,并位于包foo.bar中,则在运行java时,必须将myjavafiles作为当前工作目录。
  • Java必须传递类的完全限定名称,因为如果两个类位于不同的包中,它们可以具有相同的名称。这意味着你必须运行java directoryLister.template.DirectoryLister或任何包含你的主类的类。
  • 请注意上述语句中的句点,而不是斜杠。然而,javac需要斜杠。
  • 请注意,只要它们在正确的位置,java就会找到其他类文件,您不必将它们作为参数传递给java
  • 另请注意,javac没有这些严格限制,因为java

See here for more info on Fully Qualified names.

+0

这是固定它,非常感谢你! – 2013-05-04 04:06:50

+0

@JeffreyShin:不要忘记注册并接受这个答案。 – 2013-05-04 04:34:18

相关问题