类路径和反射

时间:2010-08-13 07:30:35

标签: java reflection build

在一个大量使用反射来根据环境选择类的项目中,有没有办法确定构建中要包含哪些库?目前,将一个图书馆从项目中拿出来是一场赌博,但坚持目前的计划“包括一切,这是确保的唯一方法”,这使整个事情变得臃肿和笨拙。

2 个答案:

答案 0 :(得分:1)

您可以使用JavaAssist lib在运行时包含新的类路径或修改类。

Here is a brief tutorial

  

您可以将目录名称注册为类搜索路径。例如,以下代码将目录/ usr / local / javalib添加到搜索路径:

  ClassPool pool = ClassPool.getDefault();
  pool.insertClassPath("/usr/local/javalib");

用户可以添加的搜索路径不仅是目录,还包括URL:

  ClassPool pool = ClassPool.getDefault();
  ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist.");
  pool.insertClassPath(cp);

答案 1 :(得分:1)

不幸的是,对于动态加载的类来说这并不困难,特别是使用将类名作为字符串传递的工厂。

如果jvm支持-Xcomp and -Xbatch选项以及-XX:CompileThreshold,则可以在开发和测试环境中使用它。它会增加你的启动时间。

这些选项只会让您的工作更轻松,但您仍可能需要彻底测试。