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

问题描述 投票:0回答:3

所以我知道这是一个很熟悉且众所周知的问题。

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

我尝试了以下内容

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类(此处也需要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文档并尝试不同的方法并没有帮助不幸

你有什么建议?

提前致谢

java linux command-line classpath javac
3个回答
0
投票

如果你正确写了这样的主要方法,请检查一下

public class HelloStorm {

    public static void main(String[] args) {

    }

}

0
投票

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

  1. 类名是HelloStorm
  2. 包是com.a.b.
  3. 编译的类文件所在的目录是〜/ Public / classes / com / a / b

要执行该程序,您必须是〜/ Public / classes目录并执行以下命令:

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

0
投票

您编译到当前位置的类,但在运行程序时不使用它。添加它,它会运行正常

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

如果您在Windows上,则类分隔符为分号。对于Unix,它是冒号。

© www.soinside.com 2019 - 2024. All rights reserved.