我获得了一大堆未完成的代码,我的任务是完成它。但是,我的导师告诉我原来未完成的代码应该运行,但事实并非如此。我将它们编译成.class文件,但是当我输入“java DirectoryLister Driver GUI”时,我得到了
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 :(得分:2)
当您运行java
时,您必须提供一个类来运行,而不是三个。该类将执行其main
方法。您必须从编译类的根目录运行java
,并且必须使用完全限定的类名(即包括包)。
例如,如果您的源文件src
中包含源文件./a/b/C.java
,则该类将在src/a/b/C.class
中编译。然后,您需要确保自己位于src
并运行java a.b.C
。
答案 1 :(得分:1)
从这些错误来看,这似乎是一个包问题。
首先,您无法在多个文件上运行java
,因为java会将后面的名称作为命令行参数传递。
其次,在DirectoryLister.java的顶部,您应该看到
package directoryLister.template;
这意味着java类的 完全限定名称 为directoryLister.template.DirectoryLister
。完全限定名称基本上是完整的类名,包括它所在的包。包是文件系统上同一目录中的类的分组。
java的设置方式,可以从任何工作目录编译java源文件。但是,在类文件上运行java
非常严格:
java
。如果类文件位于myjavafiles / foo / bar /中,并且位于包foo.bar中,则在运行java时必须将myjavafiles作为当前工作目录。java directoryLister.template.DirectoryLister
或包含主类的任何类。javac
需要斜线。java
。javac
没有java
这些严格的限制。