为什么Java找不到主类?

为什么Java找不到主类?,java,class,Java,Class,我刚刚从中复制了密钥侦听器代码。我能够将它与“javac”命令进行比较。但是,当我尝试执行编译后的代码(键入“java KeyEventDemo”)时,我看到一条大消息,最后是: Could not find the main class: KeyEventDemo. Program will exit. 昨天我在WindowsVista上玩了一个游戏(现在我在Ubuntu上玩)。在Windows中,我可以通过键入“java-cp.ProgramName”或向环境变量“classpath”添

我刚刚从中复制了密钥侦听器代码。我能够将它与“javac”命令进行比较。但是,当我尝试执行编译后的代码(键入“java KeyEventDemo”)时,我看到一条大消息,最后是:

Could not find the main class: KeyEventDemo.  Program will exit.
昨天我在WindowsVista上玩了一个游戏(现在我在Ubuntu上玩)。在Windows中,我可以通过键入“java-cp.ProgramName”或向环境变量“classpath”添加新值(“.”和“.”)来解决这个问题

在Ubuntu上,第一个解决方案不起作用。我的意思是,当我键入“java-cp.KeyEventDemo”时,我仍然有问题。此外,在Ubuntu上,我只需输入“java程序名”就可以运行其他程序


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

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

+工作 +事件 -KeyEventDemo.class
KeyEventDemo
位于包
events
中要运行它,您必须位于包含该类的
events
文件夹的父文件夹中,并使用其完全限定名运行它,包括包:

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

这是因为KeyEvent类位于package events中

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

javac -d . KeyEventDemo.java

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

您只有一个文件,为什么现在不删除包名呢?当我移除它时,它对我很好。嗨,欢迎来到stackoverflow。这个问题在大约3年前得到了回答,问题已经被确定。下次,请先阅读现有答案,并检查其中一个答案是否已被接受,然后再提供旧问题的答案。
javac -d . KeyEventDemo.java