Java 类路径与反射

Java 类路径与反射,java,reflection,build,Java,Reflection,Build,在一个大量使用反射来根据环境选择类的项目中,有没有办法确定构建中要包含哪些库?目前,从项目中拿出一个库是一场赌博,但坚持当前的“包含所有内容,这是唯一可以确定的方法”的计划会使整个项目变得臃肿和笨拙。您可以使用JavaAssist lib在运行时包含新的类路径或修改类 可以将目录名注册为类搜索路径。例如,以下代码将目录/usr/local/javalib添加到搜索路径: 用户可以添加的搜索路径不仅是目录,而且是URL: ClassPool pool = ClassPool.getDefau

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

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

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

用户可以添加的搜索路径不仅是目录,而且是URL:

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

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

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

这些选项只会使您的工作更轻松,但您可能仍需要对自己进行全面测试。

此外,请检查以下问题:
  ClassPool pool = ClassPool.getDefault();
  ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist.");
  pool.insertClassPath(cp);