我试图从命令行运行项目(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项目,可能我犯了一个愚蠢的错误而且无法弄明白。任何帮助表示赞赏!
编辑:根据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$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
请告诉我还有什么我应该尝试的!谢谢
答案 0 :(得分:0)
问题只是在/bendersexample
文件夹中有Manifest而且在这个文件夹中也创建了.jar!我只需将这些东西移到父目录中,一切正常!
最终的Manifest文件使用bendersexample.Demo
作为Main-Class,jar是从/bendersexample
的父目录创建并运行的。
如果有人遇到这个问题,我会建议您在尝试其他任何事情之前先看一下您项目的结构,因为这是一个非常简单的修复!