如果一个java工程里,有同一个jar包的多个版本,会有什么影响?

比如dom4j,我同一个工程里既有1.4,又有1.6,会有什么影响捏

这根据程序应用服务器的编译级别级新旧jar包的区别有关。影响可大可小,小则可以忽略,打则直接导致程序无法运行,报错。建议最好是用更高级版本的jar包后立即删除旧的。据我所知和经验得出。websphere的编译级别比要 tamcat和weblogic严格一些。相同的程序,如果有新旧两个jar包。在tamcat和weblogic中跑可能不会出错,但是部署到websphere服务器上很可能会出错(工作中遇到过,可费了不少麻烦,死活找不出原因)。我猜测原因可能是服务器允许加载的jar包有区别。比如websphere服务器上的程序只允许加载两个相同但版本不同的jar中的一个,而tomcat和weblogic允许程序两个都加载进去。这样程序就会找到合适的需要加载的jar包。留下低级的jar包还有可能被攻击,如果有漏洞的话。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-15
后加载的jar包中的类会替换先加载的jar包中对应名称的类,可能会丢失方法或者冲突。最好不要这样引用。
第2个回答  2013-04-15
楼上的正好说错了,classloader只会加载相同的class一次,所以后加载的class不会被覆盖!
第3个回答  2013-04-15
容易引起冲突,修要修改源码,很麻烦,最好不要这样做!

如果一个java工程里,有同一个jar包的多个版本,会有什么影响?
影响可大可小,小则可以忽略,打则直接导致程序无法运行,报错。建议最好是用更高级版本的jar包后立即删除旧的。据我所知和经验得出。websphere的编译级别比要 tamcat和weblogic严格一些。相同的程序,如果有新旧两个jar包。在tamcat和weblogic中跑可能不会出错,但是部署到websphere服务器上很可能会出错...

如何解决java工程中多个版本的包冲突问题
如何解决java工程中多个版本的包冲突问题 那肯定是包名重复了吧 只能改包名了 因为在java中包名是不能重复的 如果是工程中存在多jar包版本,二系统只需要使用其中一个版本。这种简单,删掉不相容的就是了。 如果是工程中需要同时使用不同版本的jar包,那你需要针对此部分程式码单独建立虚拟机器载入所...

MavenJar包冲突?看看高手是怎么解决的
假设项目中同时引入了A和D的依赖,按照依赖传递机制和默认依赖调节机制(第一:路径最近者优先;第二:第一声明优先),默认会引入G20版本的Jar包,而G21的Jar包不会被引用。 如果C中的方法使用了G21版本中的某个新方法(或类),由于Maven的处理,导致G21并未被引入。此时,程序在调用对应类时便会抛出ClassNotFoundExcep...

java怎么调用一个jar包里的另一个jar包的class,新手求指教,谢谢
System.out.println("反射类中所有公有的属性");Field[] fb =temp.getFields();...

一个java软件的jar包可以在电脑上运行,求教还原成可以运行的项目
一般包可用,表示他应该同时提供给你一些lib包吧,否则他的jar包在你机器上根本跑不了。把这些lib包引入到你的工程中,编译就没问题了。

java中我有个jar包更新了,旧的我又不想去掉,如何分别调用两个包里路径...
两个不同版本的jar包可以同时存在于同一个项目中,但是只会有一个jar包起作用。如果路径不同,还可以直接指定路径调用,但是路径相同,无解。

如何在一个java工程里面获取两个数据库的数据
从原则上来说,对同一数据库类型来说,高版本的数据库的jar应该是可以正常访问低版本的数据库的。所以没有必要因为这个而分成两个工程。你只要在工作中使用高版本的jar就可以了。如果你的两个数据库是不同类型的话,那么数据库访问的jar也就不一样,使用的类也不会相同。那也就没有必要分成两个工程...

多个jar几个jvm
一个。多个Jar包可以在同一个JVM中运行,每个JVM只能够启动一个Java进程,在同一个进程中,可以同时执行多个Jar包,从而实现模块化的架构设计。

java有几个版本?分别有什么区别?
3. 安全性改进:安全是密码学库的核心关注点。因此,新版本的bcprov-jdk可能会包含对已知安全漏洞的修复,或者引入了新的安全措施来防范潜在的安全威胁。这些改进有助于保护使用这些库的应用程序免受攻击。举例来说,bcprov-jdk15on-1.69.jar是一个具体的版本,它提供了强密码学的支持,包括多种加密...

我有一个java 类要使用位于jar包中的另一个类
你好,假如有这么两个类 A和B A位于com.test1包下 B位于com.test2包下 那么 在A类:package com.test1 ;import com.test2.B ;public class A{ \/\/...} 就使用import即可。

相似回答