Command line java error: Could not find or load main class

Command line java error: Could not find or load main class

我正在尝试从命令行 运行 一个项目 (Ubuntu 14.04)。主要的 class 叫做 Demo,我有一个 Demo.java、一个 Demo.class 和一个 Demo$1.class 都在同一个目录中(我知道这样会更好将它们分开)。

我写了自己的 Manifest 文件,MANIFEST.MF,看起来像这样:

Main-Class:Demo

我确保以换行符结束它。

接下来,我要创建我的 .jar 文件。我这样做是用这个命令:

jar -cfm example.jar MANIFEST.MF *.class

然后,我尝试 运行 我的项目是这样的:

java -Djava.library.path=/path/to/dependencies -jar example.jar

无论我尝试什么,我似乎都会收到以下错误:

Error: Could not find or load main class Demo

实际上我以前从来没有从命令行 compiled/run Java 项目,我可能犯了一个愚蠢的错误,只是想不通。任何帮助表示赞赏!

编辑:根据vim:

,这是example.jar的内容
    " zip.vim version v27
" Browsing zipfile /home/ellen/bendersexample2/src/bendersexample/example.jar
" Select a file with cursor and press ENTER

META-INF/
META-INF/MANIFEST.MF
AnnotatedBenders.class
Demo.class
Demo.class
Demo$ModelType.class
ManualBenders.class
ManualBenders$BendersCallback.class
ManualBenders.class
Model.class
Problem.class
Solution.class
Solution$Verbosity.class
StandardModel.class

这是罐子中的 META-INF/MANIFEST.MF 的内容:

Manifest-Version: 1.0
Created-By: 1.8.0_161 (Oracle Corporation)
Main-Class: Demo 

更新:以下是 Demo.java 的有趣部分:

package bendersexample;

public final class Demo {

   /* Some functions */

  public static void main(final String[] args) {

    /* Some code */

 }

}

我将 MANIFEST.MF 更改为以下内容:

Main-Class:bendersexample.Demo

并重新生成 example.jar 文件。我仍然得到以下信息:

Error: Could not find or load main class bendersexample.Demo

我生成 class 文件的方式会不会有问题? 为了最初生成 class 文件,我执行了以下操作:

javac -classpath .:/opt/ibm/ILOG/CPLEX_Studio_Community128/cplex/lib/cplex.jar *.java

请让我知道我还应该尝试什么!谢谢

问题在于 /bendersexample 文件夹中有 Manifest,并且也在该文件夹中创建 .jar!我只需要将这些东西移到父目录中,一切正常!

最终清单文件使用 bendersexample.Demo 作为 Main-Class,并且从 /bendersexample 的父目录创建了 jar 和 运行。

如果有人 运行 遇到这个问题,我建议您在尝试其他任何事情之前先查看您的项目结构,因为事实证明这是一个非常容易解决的问题!