2010-08-13 42 views
0

在一个大量使用反射来选择基于环境的类的项目中,有没有一种方法可以确定在构建中包含哪些库?目前,从项目中拿出一个图书馆是一场赌博,但坚持现有的“包括所有东西,这是唯一可以肯定的方式”的计划,使整个事情变得臃肿和笨拙。类路径和反射

+0

另外,检查这个问题:http://stackoverflow.com/questions/3369791/java-vm-tuning-xbatch-and-xcomp – naikus 2010-08-13 07:49:21

回答

1

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

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

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

1

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

Here is a brief tutorial

你可以注册一个目录名作为类搜索路径。例如,下面的代码添加了一个目录/ usr /本地/ javalib搜索路径:

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

,该用户可添加的搜索路径不仅是一个目录,但也有网址:

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