【问题标题】:Command line java error: Could not find or load main class命令行 java 错误:找不到或加载主类
【发布时间】:2018-09-30 17:24:42
【问题描述】:

我正在尝试从命令行(Ubuntu 14.04)运行一个项目。主类叫做 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

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

编辑:这里是example.jar的内容,根据vim:

    " 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$1.class
Demo.class
Demo$ModelType.class
ManualBenders$1.class
ManualBenders$BendersCallback.class
ManualBenders.class
Model.class
Problem.class
Solution.class
Solution$Verbosity.class
StandardModel.class

这是 jar 中 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

我如何生成我的类文件会不会有问题? 为了最初生成类文件,我做了以下操作:

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

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

【问题讨论】:

  • 创建 jar 后,jar 的内容是什么样的。您可以使用 winzip 或 7zip 打开它。我对文件夹结构、其中的文件和清单文件内容更感兴趣
  • @Tej 添加了上面的文件夹内容,如果有更多信息我应该发布,请告诉我
  • 请把jar里的manifest文件的内容贴出来
  • 也可以看看stackoverflow.com/questions/13030675/…这个问题,这可能会帮助你进一步缩小问题的范围
  • @Tej 当然,我会看看并添加上面的信息

标签: java command-line jar manifest


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多