所以,我有一个包含多个包的Java项目(如com.myapp.
a,com.myapp.b
,com.myapp.c
)以提高可读性,我想构建一个jar作为库使用另一个项目。
但我只想暴露这个jar中的一些类和接口。问题是如果我没有公开这些类,那么就不能在包之间的jar文件中看到它们(例如我在A
包中有一个类com.myapp.a
用于com.myapp.b
包裹。)
那么当我在里面定义了多个包时,怎样才能暴露出我想要的东西呢?
答案 0 :(得分:0)
目前,Java并没有直接解决这个问题。
OSGi通过显式定义导出的包列表来解决此问题。 同样希望这也将通过Java 8模块化系统解决。
所以一个选项是使用OSGi,但是如果直接使用jar文件而不是OSGi包,则此选项不起作用。
另一个选择是使用代码混淆(如Proguard)来混淆您不想公开的包。
答案 1 :(得分:0)
Eclipse通过使所有类可用来“解决”此问题,但不打算由客户端使用的类放在名称中包含“internal”的包中。例如,这可能意味着您拥有名为“com.myapp.b”和“com.myapp.internal.b”的包。这些类的用户清楚地知道,内部类不能保证向上兼容,甚至不能在以后的版本中出现。