我有以下目录结构和文件:
Folder
+
|--/org
|--Online.java
|--Online.class
当我执行以下代码时:
C:\>cd Folder
C:\Folder>java Online http://www.google.com google.html
我的文件按照我的要求执行并给我正确的输出。
现在,我想在一个Jar文件中添加包'org'和Online.class文件,例如E.g. Online.jar
我通过执行以下代码来做到这一点:
jar cvf Online.jar *
现在,当我尝试执行以下代码时:
java -jar Online.jar http://www.google.com google.html
它显示了我的错误:
Failed to load Main-Class manifest attribute from Online.jar
任何人都可以帮助我吗?我想知道这里有什么问题?
答案 0 :(得分:2)
查看java教程页面: Setting an Application's Entry Point
答案 1 :(得分:2)
这取决于你如何建造你的罐子。您将需要一个具有主类名称
的清单文件我通常使用一个蚂蚁来构建,所以我的构建任务看起来像这样:
<target name="Build_myjar">
<jar destfile="my.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="MyMainClass"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="bin"/>
</jar>
</target>
注意Manifest已经有了MainClass Name,因此负责调用MainClass
答案 2 :(得分:1)
我认为可能需要修改默认清单以包含主类......
Main-Class: Online.class
答案 3 :(得分:1)
假设您的FQCN是org.Online(这有点尴尬),结构应该是:
Folder
+
|--org
| +
| |--Online.class
|
|--META-INF
+
|--MANIFEST.MF
那是:
META-INF / MANIFEST.MF的内容应为:
Manifest-Version: 1.0
Main-Class: org.Online
即,指定完全限定的类名。
答案 4 :(得分:0)
我通常使用命令jar -cmf MANIFEST_FILE jarfile.jar *.class
并指定一个自定义Manifest文件,因为我得到的错误与你一样。
这是我使用的简单清单文件,(src)
Manifest-Version: 1.0
Class-Path: .
Main-Class: MainClassName
警告:清单必须以新行或回车结束。该 如果最后一行没有以新的结尾,则不会正确解析 线路或回车。
运行时,我使用java -jar jarfile.jar
或只需双击Windows上的.jar。