在开发过程中我有许多名称相同的jar包,但是里面内容不同。所以我设定了许多目录下面lib放各自的jar.
我可以在工程的 .classpath 文件里设定路径如下:
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/comlib/axis-ant.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/comlib/axis.jar"/>
这样可以很好的区分开来。
但是我发布到tomcat的时候lib下的jar不识别。只能识别WEB-INF/lib下的jar.
我在 系统变量classpath 里面指定了,具体的
D:\Tomcat 5.0_234\common\lib\CryptoPkg.zip;
或者D:\Tomcat 5.0_234\common\lib\CryptoPkg.jar;tomcat启动均无法加载,请教各位如何解决?多谢!

解决方案 »

  1.   

    web应用所用到的jar都应该放在WEB-INF/lib目录下!只有这样才能让服务器加载!
    其实你可以把不同的包分别放在不同的目录下,用到的时候只需把jar包拷贝到lib目录就行了,没你想的那么复杂!
      

  2.   

    即使你那样行,你想过没,万一有是jar包重复怎么办?
      

  3.   

    我程序启动所有jar都得用,有的名字相同,但是业务是不同的。所以要同时加载!
      

  4.   

    1。假设同一应用程序下有相同的jar包,系统也会自动识别该用哪个jar包,尽管可以被.classpath 文件加载进来。
    2。为了处理相同名称,不同业务的Jar包问题,我需要重新开一个应用程序。这样的话我就要部署多个应用程序。
    请指教还有别的办法么?处理同名 jar 问题。
      

  5.   

    放在E:\tomcat6\lib下面
    如果在myeclipse里面编译可以定义一个user liberary,然后引入就行
      

  6.   

    楼主要解决的是项目里的JAR管理问题.
    不要把问题推给TOMCAT服务器.
    各个JAR即使相同.也不要放到服务器的LIB目录下.每个项目都是相对独立的.
    项目里的JAR管理推荐maven
      

  7.   

    在有两个重复的jar包,但版本不同时,tomcat在加载的时候,先加载到哪个jar包就使用哪个jar包,有时这样会产生冲突,因此我的办法就是只用最新的,现在一般来说新版本对旧版本还是兼容的。
    当jar包太多时,可以建议user liberary,在web应用时,直接引用,eclipse会自动将jar部署到tomcat的当前应用的lib目录下。
      

  8.   

    user liberary 我建好了,在myeclipse里面可以用,但是发布到tomcat,还是全部到WEB-INF/lib里面成为多个jar了,怎么样才能在tomcat发布多个user liberary?
      

  9.   


    楼主将工程打成war包部署。拷贝到 web-app下面。
      

  10.   

    ------工程打成war包部署,拷贝到 web-app下面。
    这样的办法早尝试过了,只能默认把jar放到lib内,或者common/lin内。
    我是想把公共包放一个地方比如自己在
    WEB-INF/lib/com/O.jar.
    WEB-INF/lib/A/A.jar.
    WEB-INF/lib/B/B.jar.
    WEB-INF/lib/C/A.jar.
    假设我A/A.jar.和C/A.jar.名称一样,但是内容不同。
    谁有办法呢?
    在myEclipse内,可以用user liberary,但是部署到 web-app下面系统默认把所有jar放到了
    WEB-INF/lib/里面。苦啊!
      

  11.   

    只能识别WEB-INF/lib下的jar. 
    就是这样的 你都知道lib在哪加载 mv那些jar包过去就是了
      

  12.   

    建议jar包名不要一样,可以参考eclipse的做法
      

  13.   

    把同名的包找出来。
    比如有两个A.jar
    一个放在common/lib,一个放在webapps/app/WEB-INF/lib。试试,但我特别奇怪,怎么会有这样的要求呢?包名一样,还非得一样???
      

  14.   

    你直接吧user liberary 拷贝到tomcat的lib下不就完事啦,再把你的工程拷贝到webapps下
      

  15.   

    包名一样 是因为各个供应商提供的接口,其中它们可能有的是同一家公司给做的,所以jar名称一个样子。要命的是 import 路径也一样。
    直接吧user liberary 拷贝到tomcat的lib 如:
    C_lib.userlibraries 根本就没有用。
    直接放jar 到tomcat的lib 和放到工程的webapps/下是一样的,不过是执行先后的问题,并不能解决jar冲突 import 路径的问题。
      

  16.   

    java工程是不允许有同名jar的。
    我现在的办法是将不同明的jar在一个工程里。
    有冲突的jar,另外起个项目。
    这样部署多个工程在tomcat的webapps/下。还有一个办法是用jd-gui 工具打开jar,把class内所有都拿出来,重新设定路径,打成新的jar包。但是这样有风险。可能会出现错误。不知道谁还有更好的建议?多谢!