mag*_*iez 4 java eclipse jar manifest
我正在尝试从我的eclipse创建一个jar,为了能够使用外部.jars,我在类路径中使用这个带有多个.jars的清单:
Manifest-Version: 1.0
Sealed: true
Main-Class: src.BatchTester
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstream/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/antlr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:/Tools/Jdbc/lib/sqljdbc4.jar
Run Code Online (Sandbox Code Playgroud)
显然,如果我没有将库放在类路径中,则会出现以下错误:
java.lang.NoClassDefFoundError: com/thoughtworks/xstream/XStream
Run Code Online (Sandbox Code Playgroud)
但是当我把它们放在类路径中时,错误会变为:
java.lang.NoClassDefFoundError: src/BatchTester
Run Code Online (Sandbox Code Playgroud)
因此,它无法找到我的主要课程.我在类路径中.尝试了几种可能性,比如添加或删除类路径,但无法使其工作.
知道怎么解决这个???
感谢您的时间和精力,
PS:创建.jar之后,清单里面的类路径看起来像:
Class-Path: . P:/Tools/xstream/1.4.2/lib/kxml2-2.3.0.jar P:/Tools/xstr
eam/1.4.2/lib/xstream-1.4.2.jar P:/Tools/StringTemplate/4.0.5/lib/ant
lr-3.3-complete.jar P:/Tools/StringTemplate/4.0.5/lib/ST-4.0.5.jar P:
/Tools/Jdbc/lib/sqljdbc4.jar
Run Code Online (Sandbox Code Playgroud)
使用新的线条和空格,但即使将其更改为"正确"格式,我也遇到了同样的问题.
PS2:我知道有一些像Fat-Jar这样的插件你可以使它工作,但我不想在我的.jar中插入超过需要的数据
最后,我将所有的lib复制到/ lib文件夹中,然后将它们添加到带有ant目标的.jar中,因为IT人员似乎没问题(因为它是一个小应用程序).
这是蚂蚁(如果对某人有用):
<?xml version="1.0" encoding="UTF-8"?>
<project name="BatchTester" default="compile" basedir=".">
<property name="external" value="lib/external-libs.jar"/>
<target name="compile">
<javac srcdir="jav"
source="1.6"
/>
<echo>Creating jar File</echo>
<!--create a new .jar with all the external jars in /lib-->
<jar jarfile="${external}">
<zipgroupfileset dir="lib/">
<include name="**/*.jar"/>
</zipgroupfileset>
</jar>
<!--<sleep seconds="1"/>-->
<!--create .jar file-->
<jar jarfile="BatchTester.jar" index="true" filesetmanifest="mergewithoutmain">
<fileset dir=".">
<include name="**/jav/**/*.class"/>
<exclude name="**/jav/**/*.java"/>
</fileset>
<zipfileset src="${external}">
<exclude name="META-INF/*.SF"/>
</zipfileset>
<manifest>
<attribute name="Main-Class" value="jav.BatchTester"/>
</manifest>
</jar>
<!--delete previously created extern .jar-->
<delete file="${external}"/>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32625 次 |
| 最近记录: |