有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java类加载器类。forName可以使用加载一个包中的所有类*

谢谢你帮我

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

问题:

在应用程序启动时,我使用

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

就像这样,我加载了所有的类,一切都很好,直到我升级Jar,所以Jar包被更新为其他包名,从org.codehaus.jacksoncom.fasterxml.jackson。所以我必须更改class.forName代码

所需解决方案: 以下代码是否可行

Class.forName("com.fasterxml.jackson.*");

或者有没有其他方法可以将所有类加载到一个包中

请帮忙:)


共 (1) 个答案

  1. # 1 楼答案

    {}是不可能的,
    docs非常清楚,name参数应该是:

    name - fully qualified name of the desired class

    此外,Class.forName返回一个表示给定名称后面的类的对象

    你的问题是,如果升级/更新jar文件,jackson的包可以是org.codehaus.jacksoncom.fasterxml.jackson之一。如果您想动态加载jackson类,并且不确定这些类的基本包是什么,那么这很奇怪

    但无论如何,一种解决方案是,如果给定的包名包含必需的类(或者至少包含很少的类,这样您就知道包是可见的),则使用反射进行扫描,如下所示:
    Can you find all classes in a package using reflection?
    然后用类循环包,用Class.forName初始化它们