Java命令行错误(linux) - 找不到或加载主类

时间:2015-05-04 10:16:01

标签: java linux command-line classpath javac

所以我知道这是一个经常发生的熟悉和众所周知的问题。

大多数情况下,问题是如果类在包中,则用户没有具体说明包。但是我确保我的情况不同。

我尝试了以下

1-我确保项目的所有java文件都在同一个文件夹中(4个java文件,一个主类)

2-我确保所有类都在任何包中

然后我尝试按以下方式运行程序(这是一个风暴问候世界的例子,以防你熟悉它)

1-使用以下命令进行编译(风暴需要jar)

javac -classpath ~/Public/apache-storm-0.9.4/lib/storm-core-0.9.4.jar *.java

2-使用以下命令运行Main class(此处也需要jar,否则我将收到另一个错误)

java -cp ~/Public/apache-storm-0.9.4/lib/storm-core-0.9.4.jar HelloStorm

我得到的是下面的错误

Error: Could not find or load main class HelloStorm

我仔细检查过HelloStorm是主类的名称(没有拼写错误)

我不熟悉从命令行运行框架..所以我可能错过了一些东西,但是搜索类似的问题,阅读oracle文档并尝试不同的方法不幸没有帮助

你的建议是什么?

先谢谢

3 个答案:

答案 0 :(得分:0)

如果您正确编写了这样的主要方法,请检查

public class HelloStorm {

    public static void main(String[] args) {

    }

}

答案 1 :(得分:0)

您将类编译到当前位置,但在运行程序时不使用它。添加它,它将运行良好

java -cp .:~/Public/apache-storm-0.9.4/lib/storm-core-0.9.4.jar HelloStorm

如果您使用的是Windows,则类分隔符为分号。对于Unix,它是冒号。

答案 2 :(得分:0)

虽然您希望从命令行执行java程序,但有以下假设:

  1. 班级名称是HelloStorm
  2. 包是com.a.b
  3. 编译的类文件所在的目录是〜/ Public / classes / com / a / b
  4. 要执行该程序,您必须是〜/ Public / classes目录并执行以下命令:

     v2 %/% 91
     #[1] 5