感谢您帮助我完成
今天我有一个很简单的问题
问题:
在我的应用程序启动时,我使用将所有类加载到一个包中
Class.forName("org.codehaus.jackson.JsonGenerator$Feature");
............................
............................ and so on
像这样,我加载了所有的类,一切都很好,直到我升级了Jar,所以Jar包被更新为其他包名称,从org.codehaus.jackson
到com.fasterxml.jackson
。所以我必须更改class.forName
代码。
所需解决方案:以下代码是否可能
Class.forName("com.fasterxml.jackson.*");
或者有其他方法将所有类加载到一个包中?
请帮忙:(
Class.forName("com.fasterxml.jackson.*");
是不可能的,
docs对此非常清楚,name参数应该是:
name-所需类的完全限定名称
此外,Class.forName
还返回一个对象,表示给定名称后面的类。
你的问题是,如果你升级/更新jar文件,jackson的包可以是org.codehaus.jackson
或com.fasterxml.jackson
中的一个。如果您想动态加载jackson类,但又不确定这些类的基本包是什么,这就很奇怪了。
但无论如何,如果给定的包名称包含所需的类(或者至少包含少数类,这样您就知道包是可见的(,一种解决方案是使用反射扫描,如下所示:
您能使用反射找到包中的所有类吗
然后用类循环遍历包,用Class.forName
初始化它们。