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

我猜测原因可能是服务器允许加载的jar包有区别。比如websphere服务器上的程序只允许加载两个相同但版本不同的jar中的一个,而tomcat和weblogic允许程序两个都加载进去。这样程序就会找到合适的需要加载的jar包。留下低级的jar包还有可能被攻击,如果有漏洞的话。
如果一个java工程里,有同一个jar包的多个版本,会有什么影响?
这根据程序应用服务器的编译级别级新旧jar包的区别有关。影响可大可小,小则可以忽略,打则直接导致程序无法运行,报错。建议最好是用更高级版本的jar包后立即删除旧的。据我所知和经验得出。websphere的编译级别比要 tamcat和weblogic严格一些。相同的程序,如果有新旧两个jar包。在tamcat和weblogic中跑可能不会出错,但是部署到websphere服务器上很可能会出错(工作中遇到过,可费了不少麻烦,死活找不出原因)。我猜测原因可能是服务器允许加载的jar包有区别。比如websphere服务器上的程序只允许加载两个相同但版本不同的jar中的一个,而tomcat和weblogic允许程序两个都加载进去。这样程序就会找到合适的需要加载的jar包。留下低级的jar包还有可能被攻击,如果有漏洞的话。2013-04-17
后加载的jar包中的类会替换先加载的jar包中对应名称的类,可能会丢失方法或者冲突。最好不要这样引用。2013-04-15
楼上的正好说错了,classloader只会加载相同的class一次,所以后加载的class不会被覆盖!2013-04-15
容易引起冲突,修要修改源码,很麻烦,最好不要这样做!2013-04-15
mengvlog 阅读 250 次 更新于 2025-10-30 08:41:22 我来答关注问题0
  • 我猜测原因可能是服务器允许加载的jar包有区别。比如websphere服务器上的程序只允许加载两个相同但版本不同的jar中的一个,而tomcat和weblogic允许程序两个都加载进去。这样程序就会找到合适的需要加载的jar包。留下低级的jar包还有可能被攻击,如果有漏洞的话。后加载的jar包中的类会替换先加载的jar包中...

  •  tankmarshal java 中,同一个包内的类如何相互调用?

    在同一个包里的话,如果public的,可以再A类中实例化B类,也就是说new B();就可以调用B类中的方法了,如:B b = new B();b.getName();有两种办法解决:1.两个文件放在同一路径下,先编译文件1(userinfo.java),再编译文件2(reg.java)2.先在文件2(reg.java) 同一路径下新建文件夹DB...

  •  一条麻麻儿鱼 java,同样一个类,在一个工程下能执行,另一个工程下不能执行,为什么?

    jdk的版本可能不一样。jdk的版本不一样导致编译出来的结果就不一样,建议查下jdk的版本在两个工程中是否相同 有可能是你的jar包没有 导致有一些方法不能使用 但是具体的也不知道 你要截个图 或者描述仔细一点main方法中是不是生成了其他的类的实例,而另外一个工程中没有那个类,或者类名相同,类...

  •  masew123456 不是每个程序只能有一个main()吗,为什么java里同一程序不同类都可以自己这一个main方法??

    每个类都可以有一个main方法 关键是看你调用那个类的main方法来启动程序~~没有这回事,可以有多个main方法的。你记错了,应该是只能有一个public class公共类。可以。但是你运行哪个.java文件就只运行他的main,这个main里面可以调用其他java文件里的方法但不是main你能发段代码看看吗 说的不清楚

  •  简单的加油 我是java菜鸟,下载了一个java工程,里面有.class .project build.properties等文件,请问如何打开该工程

    安装了eclipse或myEclipse没有?如果有,打开eclipse或myeclipse后先选中File菜单,->import->General->Existing Projects into WorkSpace->再点击next按钮->再从通过browse选中你下载的java工程所在的目录,导入进来在选中它,最后点击finish则可。没有,则下载一个,eclipse是开源的。class...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部