标题几乎都说明了。 如果我提供了一个库并且有人使用它,他可以编写类并将它们添加到我的库定义的包中。然而,这会增加安全性问题,因为这意味着他可以访问库中没有访问修饰符定义的方法。
是否有禁止用户向现有软件包添加类的解决方案?
答案 0 :(得分:0)
是(但)。 sealed
清单属性将封装包,防止包含其他来源的类。 (technote)
虽然这取决于具体情况。如果使用它的人首先使用库jar文件,那么它的游戏就结束了。
如果库和客户端代码都由同一个类加载器加载,那么这通常会产生问题,尽管使用不同签名签名的类不能在同一个包中共存。如果使用不同的类加载器,即使使用父子关系,那么在运行时具有相同名称但由不同类加载器加载的包是不同的包。
对于Java PlugIn和Java WebStart,Trusted-Library
清单条目会将jar滑入父类加载器,从而保护它免受可能不受信任的应用程序代码的影响。