为什么Java无法找到主类?

时间:2010-01-26 09:47:38

标签: java class

我刚从http://java.sun.com/docs/books/tutorial/uiswing/examples/events/KeyEventDemoProject/src/events/KeyEventDemo.java复制了Key-Listener代码。我能够用“javac”命令对它进行比较。但是当我尝试执行已编译的代码(输入“java KeyEventDemo”)时,我看到了一条很大的消息:

Could not find the main class: KeyEventDemo.  Program will exit.

昨天我在Windows Vista上有similar problem(现在我在Ubuntu上)。在Windows中,我能够通过键入“java -cp.ProgramName”或者通过向环境变量“classpath”添加新值(“。”和“..”)来解决问题。

在Ubuntu上,第一个解决方案不起作用。我的意思是,当我输入“java -cp.KeyEventDemo”时,我仍然有问题。而且,在Ubuntu上我只能输入“java ProgramName”来运行其他程序。

那么,有人可以告诉我这个KeyEventDemo有什么特别之处吗?为什么它不会工作以及如何解决它?

4 个答案:

答案 0 :(得分:7)

KeyEventDemo位于包events中要运行它,您必须位于包含该类的events文件夹的 parent 文件夹中,并使用其完全限定名称运行它,包括包:

java events.KeyEventDemo

类路径必须包含文件夹(或JAR),它是表示包的文件夹层次结构的根;当前文件夹(我相信)会自动包含。

答案 1 :(得分:5)

此程序不在默认包中,而是在“事件”包中:使用包含“events”文件夹的目录中的java -cp . events.KeyEventDemo

   +work
    +events
     -KeyEventDemo.class

答案 2 :(得分:4)

这是因为 KeyEvent 类在包事件中。

您必须从源代码中删除包事件; 行,或者使用以下代码编译它:

javac -d . KeyEventDemo.java

答案 3 :(得分:0)

也许您使用不同的java版本编译和运行。 当您尝试在eclipse中执行示例时,这很常见。