把一个java程序打包成jar包后,manifest.mf中设置为:Manifest-Version: 1.0
Main-Class: com.huawei.dataParse.fileCompare
Class-Path: lib/was-util.jar lib/xercesImpl-hw.jar lib/xml-apis.jar无法找到该jar包,但是有把lib文件夹移到jar包外面就能执行。 
这个怎么回事???应该怎么解决??谢谢!~~~

解决方案 »

  1.   

    你已经把它打成jar包了,应该就不能进压缩包里面去找文件了。
      

  2.   

    打包成jar包 他不会添加依赖包的吧如果要使用这个jar包 就血药添加依赖包所以 用你这个包的时候,需要看下依赖那些包, 一并添加到工程lib下就可以了
      

  3.   

    Manifest-Version: 1.0
    Rsrc-Class-Path: ./ webservices.jar spring-orm-2.5.5.jar antlr-2.7.6.j
     ar JEEComponent.jar commons-io-1.4.jar asm-2.2.3.jar cglib-nodep-2.1_
     3.jar 
    Class-Path: .
    Rsrc-Main-Class: com.client.Client
    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader这个是之前做的一个项目的配置文件,供参考
    依赖JAR包直接扔在打包的JAR根目录下就行了.你的这个配置
    Class-Path: lib/was-util.jar lib/xercesImpl-hw.jar lib/xml-apis.jar
    需要在JAR包同级目录建立lib文件夹才能找得到.
      

  4.   

    使用依赖的jar的原理和调用类一样,只要在同目录下有相应的jar就可以调用到,如果要放在其他目录下,也要将这个目录指定出来。
    将依赖的jar和自己的jar放在同一目录下吧。
      

  5.   

    我想问一下,我如果只想打一个包,我的jar包依赖于它内部的jar包,这个应该怎么实现呢? 谢谢!!
      

  6.   

    所依赖的jar包只能放在你的jar包之外,不能一起打包进去
      

  7.   

    估计要自己写一个类加载器,它能从你这个 jar 中查找嵌入在 jar 里面的 jar 包,然后你的那个 bootstrap 类启用时把这个类加载器设置为当前的类加载器。看上去这比你把它直接放在外面更麻烦。还是直接解压出来简单啊。要不你就把其它的第三方 jar 包全解压到同一个目录,你的 jar 也解压到同一个目录,最后把这个目录重新打包成一个 十全大补包 ^_^,这样的话,只要这些 jar 里面没有包名和类名完全相同的类的话,还是可以工作的。不过这样的话,以后想换其中一个 jar 包版本的话,得重新再解压打包一次。
      

  8.   


    对,就得这样!要不你就用 FatJar 工具把那些 JAR 包打散一块打包。
      

  9.   

    如果想打进同一个jar包(9楼所说的十全大补包),可以用ant任务来实现:<target name="jar" description="Pack binary java classes">
      <jar jarfile="dist/myApp.jar">
        <fileset dir="classes"/>
        <zipfileset src="lib/depend1.jar" />
      </jar>
    </target>classes、lib、dist三个文件夹放在同一级目录下,分别用来放置你的编译后的类文件、依赖的其它jar包、最后打成的完整的jar包。