java类加载器类。forName可以使用加载一个包中的所有类*
谢谢你帮我
今天我有一个非常简单的问题
问题:
在应用程序启动时,我使用
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.*");
或者有没有其他方法可以将所有类加载到一个包中
请帮忙:)
# 1 楼答案
{}是不可能的,
docs非常清楚,name参数应该是:
此外,
Class.forName
返回一个表示给定名称后面的类的对象你的问题是,如果升级/更新jar文件,jackson的包可以是
org.codehaus.jackson
或com.fasterxml.jackson
之一。如果您想动态加载jackson类,并且不确定这些类的基本包是什么,那么这很奇怪但无论如何,一种解决方案是,如果给定的包名包含必需的类(或者至少包含很少的类,这样您就知道包是可见的),则使用反射进行扫描,如下所示:
Can you find all classes in a package using reflection?
然后用类循环包,用
Class.forName
初始化它们