创建引用另一个jar的Jar文件

时间:2014-12-19 16:54:01

标签: java eclipse jar

我使用Eclipse Europa来开发我的代码。我能够使用eclipse执行我的代码。但是我想将我的代码导出为jar。

我的项目中有4个班级。我用过默认包。 我的班级引用外部罐子。

我尝试使用export jar选项导出为jar。我没有runnable jar选项。

当我尝试在命令行中执行程序时,它说

java -jar rus.jar "F2ile.xls" "Links.txt"

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/us
rmodel/RichTextString
        at ReadText.main(ReadText.java:29)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.RichTe
tString
        at java.net.URLClassLoader$1.run(Unknown Source)
        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)
        ... 1 more

2 个答案:

答案 0 :(得分:0)

这是一个类路径问题,您可以尝试以下方法:

java -cp rus.jar:<poi-*.jar> <class> //poi jar name to provide and the class

其他选项是使用清单文件:

<jar jarfile="rus.jar">
    ..
    ..
    <manifest>
       <attribute name="Main-Class" value="<class_name>"/>
       <attribute name="Class-Path" value="<poi*.jar>"/>
    </manifest>
</jar>

答案 1 :(得分:0)

使用MANIFEST文件将您的jar打包到META-INF目录中(在jar文件的根级别)。 在MANIFEST中添加一个条目以指定要执行的主类:
Main-Class: classname
其中classname是包含包的完整类名。 打包时,您可以使用命令java -jar jarfile.jar运行主类。
您不必在命令行上指定类名。对于任何可以使用jar文件的人来说都比较容易。