我有一个以文本或二进制格式写入数据的库.它有以下三个组成部分:
>通用数据结构
>文字作者(取决于1)
>二进制写入器(取决于1)
分发它的显而易见的方法是3 .jar文件,这样用户只能包含他们需要的内容.
但是,“通用数据结构”组件实际上只是两个小类,所以我考虑只创建两个.jar文件,并在两者中包含常见的.class文件.
我的问题:这样做有什么潜在的问题?
解决方法:
其他提到的潜在版本不匹配实际上是如果在不同的jar中部署相同的类,可能会遇到的一组更大的类加载问题.
类加载错误最有可能在应用程序服务器/ EJB容器或类似设置中咬你,其中有多个组件/应用程序由类加载器层次结构加载.但是,如果同一个类由两个不同的类加载器加载,那么这些类被JVM视为完全不同的类!这可能导致不同的运行时错误,如LinkageError(例如,如果相同类定义的两个不同版本发生冲突 – 如其他答案中所述),ClassCastException(如果在两个不同类加载器加载的类定义之间尝试强制转换)等.相信我, classloading hell是一个你不想看到的地方.
我会把整个库放到一个罐子里,以尽量减少这种风险.