创建和运行.jar文件时出现问题

时间:2012-03-09 15:46:01

标签: java jar

我已经将一个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。程序将退出。

3 个答案:

答案 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

请记住在最后一次输入后留下三行空白。

希望我有所帮助。