我已经将一个java项目编译成一个jar但是在尝试运行它时遇到了一些问题
java -jar XMltoCSV.jar
错误:找不到或加载主类XMLtoCSV.class
我创建了一个包含以下内容的清单文件:
Main-Class:xmltocsv.XMLtoCSV
(清单文本文件中有换行符)
XMLtoCSV.class确实包含main()方法。我一直在运行这段代码来创建jar文件:
jar cvf XMLtoCSV.jar Manifest.txt xmltocsv / * .class
我知道它有效,因为我得到了:
jar cvfm XMLtoCSV.jar manifest.txt XMLtoCSV.class
增加了清单 添加:XMLtoCSV.class(in = 4885)(out = 2492)(缩小48%)
为什么它会给我这个错误?在此先感谢您的帮助
看来我也遇到了另一个错误,这是什么意思?:
线程“main”中的异常java.lang.UnsupportedClassVersionError:xmltocsv / XMLt oCSV:不支持的major.minor版本51.0 at java.lang.ClassLoader.defineClass1(Native Method) 在java.lang.ClassLoader.defineClassCond(未知来源) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) 在java.net.URLClassLoader.access $ 000(未知来源) 在java.net.URLClassLoader $ 1.run(未知来源) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) 找不到主类:xmltocsv.XMLtoCSV。程序将退出。
答案 0 :(得分:4)
Main-Class: XMLtoCSV.class
这不对。
您必须指定类似的内容:
Main-Class: com.mydomain.XMLtoCSV
即该类的完全限定名称。
请参阅:http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
答案 1 :(得分:3)
将.class
放入清单。
<强>更新强>
你的主要班级package
是多少?如果您的Java文件包含诸如
package com.google.common.base;
在顶部。您需要在清单中包含该包。在你的情况下:
Main-Class: com.google.common.base.XMLtoCSV
如果您的班级不拥有此类软件包状态,则错误是其他内容。
(请注意com.google.common.base
只是一个例子。)
答案 2 :(得分:0)
对于jar可执行文件,你必须关注清单文件中的两件事:
1-“Main-Class”条目必须指向将要启动应用程序的类,即您声明启动应用程序的主要方法的类。
2-在清单文件上的所有条目之后,你必须留下三行空白(我从未找到过解释为什么需要这些文件的文档但总是对我有用)。
最简单的MANIFEST文件如下所示:
Manifest-Version: 1.0
Main-Class: com.foo.FOO
请记住在最后一次输入后留下三行空白。
希望我有所帮助。