我在运行一个jar文件的时候需要用到另一个包外面的jar文件,请问这个时候应该如何调用(主程序的运行需要调用基础类库,但是这些度没有打包到主程序的jar文件之中)

解决方案 »

  1.   

    两个方法:1) 在运行时参数加上 -cp 外部.jar
    2) 直接把外部的jar合并到主jar中
      

  2.   

    还是现实无法找到class错误,请问是不是要设置环境变量什么?
      

  3.   

    如果你是使用java -jar xx.jar来运行的话,你可以在xx.jar中的META-INF\MANIFEST.MF文件中添加Main-Class一行来指定主类,添加Class-Path来指定它所需要的jar(以空格分开)
      

  4.   

    set classpath=D:\lib;<--这个是需要的外部jar包的文件夹
    java -jar kibatch.jar  KIF014HB 11
    echo %ERRORLEVEL%   
    运行之后还是显示无法找到class错误
      

  5.   

    似乎用java -jar方式运行程序系统设置的PATH和CLASSPATH已经不起作用了,需要在MANIFEST.MF或者参数中设置
      

  6.   

    我在批处理开头就设置了set classpath=D:\lib;而且我把所有的jar包的绝对路径都写了之后还是找不到需要的class文件
      

  7.   

    1.用fat jar 工具把两个jar合并了,这样比较简单,直接运行,相互条用都不是问题。
    2.把jar路径都引用到classpath中去,直接调用。
      

  8.   

    classpath是系统的classpath,还是在批处理的时候set的?我在批处理里全部写全了也还是找不到要调用的那个方法
      

  9.   

    用java -jar kibatch.jar这样的方式,必须修改META-INF\MANIFEST.MF文件,在里面增加一行Class-Path来指定它所需要的jar(以空格分开),设置的环境变量我记得会忽略的
      

  10.   

    我记忆中是会的,所以必须修改jar中的MF文件,如果你不想这样
    那就java -cp kibatch.jar;其它的jar;   MainClassName,不要使用java -jar,其实效果是一样的
      

  11.   

    我在manifest中全部把外部的jar都写进去了,但是运行的时候反而找不到程序的入口了
      

  12.   

    那你要在MF中写Main-Class这个属性啊。不可能找不到的
      

  13.   

    写了的,不加class-path这个属性是可以找到的,只是提示无法找到外部包的文件,但是加上之后就找不到程序的入口了
      

  14.   

    外部jar你放到运行项目同级目录,或者临级目录; 直接用相对路径写;应该可以的; 
    多个外部jar文件,可以这样配置 MANIFEST.MF文件
    Manifest-Version: 1.0
    Main-Class: ThreadTest
    Class-Path: lib\emaysdkclient.jar 
     lib\sqljdbc.jar 
     lib\activation-1.1.jar 
     lib\commons-beanutils-1.7.0.jar 
     lib\commons-codec-1.3.jar 
     lib\commons-httpclient-3.0.jar 
     lib\commons-logging-1.0.4.jar 
    注意:多个jar文件时;每个jar前面留一个空格,后面留一个空格;格式如上所示:
    我测试过,可以运行的
      

  15.   

    这个是manifest配置文件:
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.0
    Created-By: 1.5.0_04-b05 (Sun Microsystems Inc.)
    Main-Class: jp.co.krosaki.framework.batch.KiBatchExecutor
    Class-Path: D:\kibatch.jar    <--这个是主程序所在的jar文件
     D:\lib\commons-logging-1.1.1.jar 
     D:\lib\junit-4.6.jar 
     D:\lib\KiBatBase.jar 
     D:\lib\log4j-1.2.15.jar 
     D:\lib\ojdbc14.jar 
    下面是批处理运行文件:
    java -jar kibatch.jar  KIF014HB 11
    echo %ERRORLEVEL%pause
    还是现实无法找到程序入口
      

  16.   

    Class-Path 一般不支持绝对目录吧,一般都是使用相对目录,而且用/这个替代\,还有我说了,是空格分开不是回车!
    再说个问题,如果java -jar你一直解决不了,你就不会java -cp kibatch.jar;lib.jar jp.co.krosaki.framework.batch.KiBatchExecutor KIF014HB 11 就可以啦,这么简单的解决办法都不用,非要使用复杂的干什么!!!
      

  17.   

    很简单, MANIFEST.MF文件Manifest-Version: 1.0
    Main-Class: com.xxx.Main
    // 问题是这里, 这里要有一个空行
      

  18.   

    上面没弄好,  重来一遍MANIFEST.MF文件-------------------------------------------
    Manifest-Version: 1.0
    Main-Class: com.ryouka.ligy.main.Main
    // 问题是这里, 这里要有一个空行
    -------------------------------------------
      

  19.   

    如果需要加 Class-Path, 那就在 Class-Path完了以后, 加入一个空行
    也就是说, 不管你加入了多少东西, 要在文件的最后, 加一个空行