【发布时间】: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