【问题标题】:Create Jar file which references another jar [duplicate]创建引用另一个jar的Jar文件[重复]
【发布时间】:2015-02-18 15:37:26
【问题描述】:

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

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

我尝试使用 export jar option 导出为 jar。我没有可运行的 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

【问题讨论】:

标签: java eclipse jar


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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>
    

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多