Class.forName("com.fasterxml.jackson.*");
是不可能的,docs非常清楚,名称参数应为:感谢您的帮助
今天我有一个非常简单的问题
问题:] >>
在我的应用程序启动时,我正在使用]加载一个包中的所有类>
是否可以使用以下代码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(“ org.codehaus.jackson .....
将所有类加载到一个包中。 [Class.forName("com.fasterxml.jackson.*");
是不可能的,docs非常清楚,名称参数应为:名称-所需类的完全限定名称
此外Class.forName
返回一个单个对象,该对象表示给定名称后面的类。
您的问题是,如果您升级/更新jar文件,杰克逊的软件包可以是org.codehaus.jackson
或com.fasterxml.jackson
之一。如果您想动态地加载jackson类,并且不确定这些类的基本包是什么,这将很奇怪。
但是无论如何,一种解决方案是,如果给定的程序包名称包含必需的类(或其中至少有几个,则您会知道该程序包是可见的),请使用反射进行扫描,如下所示:Can you find all classes in a package using reflection?然后,使用类循环遍历该包,以使用Class.forName
对其进行初始化。
Class.forName("com.fasterxml.jackson.*");
是不可能的,docs非常清楚,名称参数应为: