我如何为作为混淆的jar文件分发的封闭源应用程序提供包含插件API的单独jar文件?
应用程序将在内部使用API来实现某些功能。
从某种意义上说,我已经设法实现了这一点,一些插件需要的实用程序类放在包含插件API的jar中,然后内部主应用程序类也使用它。
当我遇到两者都需要的课程时会出现问题,但某些访问应仅限于主要应用程序。
作为一个例子,我有一个像这样的EventManager类:
public final class EventManager {
// Put an event on the queue, needed by plugins.
public void pushEvent(Event event) { ... }
// Register listeners for particular events, needed by plugins.
public void registerListener(EventListener listener) { ... }
// This method should not be visible to the plugin designers!
// The application should have rigid control over when this is called.
public void processEvents() { ... }
}
也许这个问题可以通过我没有考虑过的不同设计来解决,或者这个想法是有缺陷的,这是我第一次尝试创建可扩展的应用程序。
如果要将应用程序作为单个包分发,我可以使用包的可见性并在那里放置这些详细信息,但由于我希望关闭应用程序本身,我认为插件API和应用程序无法使用住在同一个罐子里。
我花了几个小时试图研究这个,大多数资源单独处理这个问题涉及的各种主题,但不是如何组合它们,或者它们并不完全相关。以下是一些不断出现的链接:
问题摘要:如何为模糊处理的应用程序提供扩展/插件API作为单独的jar文件?
这是我关于SO的第一个问题,所以希望我没有破坏过多的规则。