以编程方式动态导入

时间:2013-11-22 08:33:15

标签: java dynamic import package classloader

我只是想在运行时以编程方式实现该行。

  

import com.company.package。*;

我无法相信所有的搜索都会导致Python,我当然不希望一个接一个地加载类和循环。它必须是一个更快的命令。

有什么建议吗?

P.S:我知道这不是最好的设计,但我是通过JSP来做的,所以也许有一些方法可以在声明中使用参数,如

<%@ page import=%{myPackage} %>

1 个答案:

答案 0 :(得分:1)

ClassLoader过于动态/灵活,无法满足您的要求。具体来说,没有可移植的方法从ClassLoader列出目录的内容,因此无法确定要加载的完整类集。以下是两个非便携式建议:

  1. 假设你的ClassLoader实现URLClassLoader,然后调用getURLs,然后假设这些URL是file: ...或者:
  2. 假设 ClassLoader.getResource(“com / company / package /”)将返回一个非空的URL,然后假设该URL将为file: (或jar:,然后假设内部网址为file:,然后提取并使用该网址
  3. 在任何一种情况下,解析file: URL(处理URL解码),列出目录/ JAR的内容以查找所有*.class个文件。

    请注意,这基本上是Spring classpath*:所做的,并且由于这些原因,它们在documentation中包含了几个可移植性警告。