类加载相同java代码,两个.class文件的问题?

时间:2014-01-27 21:06:14

标签: java class classloader

如果我有一个java类,并且: - 我编译了类并将其包含在jar中A - 单独编译同一个类并将其包含在另一个jar中B (我知道这样做在政治上是不对的......等等) (编译是在同一台机器上对同一个jdk完成的)

如果我把这两个罐放在同一个战争中 - 我可以得到类加载问题吗?

2 个答案:

答案 0 :(得分:1)

没有。你只需要找到它找到的第一个副本。如果他们在同一个包中,你实际上永远不会看到其他类。

这样做并非“政治上”错误。这基本上是一个错误。

答案 1 :(得分:1)

两种陷入困境的方法:

  1. 使用相同名称的两个外部不同的类,以便针对其中一个编译的其他类在引用第二个类时无效。
  2. 有两个相同的类副本(甚至是相同的副本)并管理(通过多种方法之一)使用两个不同的类加载器加载它两次。
  3. 但是在类路径中两次使用相同的(从外部属性角度来看)类不是问题 - 将始终加载JAR搜索顺序中的第一个。