classloader class.forName可以使用。*

问题描述 投票:-2回答:1
加载一个包中的所有类。

感谢您的帮助

今天我有一个非常简单的问题

问题:] >>

在我的应用程序启动时,我正在使用]加载一个包中的所有类>

Class.forName("org.codehaus.jackson.JsonGenerator$Feature");
............................
............................ and so on

像这样,我加载了所有的类,一切都很好,直到升级Jar为止,因此Jar包已更新为其他包名,从org.codehaus.jacksoncom.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.jacksoncom.fasterxml.jackson之一。如果您想动态地加载jackson类,并且不确定这些类的基本包是什么,这将很奇怪。

但是无论如何,一种解决方案是,如果给定的程序包名称包含必需的类(或其中至少有几个,则您会知道该程序包是可见的),请使用反射进行扫描,如下所示:Can you find all classes in a package using reflection?然后,使用类循环遍历该包,以使用Class.forName对其进行初始化。

java jar classloader
1个回答
-1
投票
Class.forName("com.fasterxml.jackson.*");是不可能的,docs非常清楚,名称参数应为:
© www.soinside.com 2019 - 2024. All rights reserved.