b1412 / jfinal-ext

Our extensions for jfinal
277 stars 236 forks source link

使用ClassSearch里的几点小建议 #17

Closed inthirties closed 9 years ago

inthirties commented 9 years ago

版本是3.1.0.

其中 com.jfinal.ext.kit.ClassSearcher Line 38 Class<?> classInFile = Reflect.on(classFile).get(); 这里on方法里会调用forName 该方法将会执行static代码块,而我做Annotation时,不希望static执行,而是实例化时执行。

2 关于其中的search方法 Line 167 List classFileList = findFiles(classpath, "*.class"); 这里,有比较严重的hardcode 代码 Line 80处 classname = tem.substring(tem.indexOf("/classes") + "/classes".length() + 1, tem.indexOf(".class")); 如果目录中不幸含有classes,或者是 目录本身不包括/classes的话,这两种可能性在WEB项目里有可能性,但是在unit test里是可能性很大的。

line 168 classFileList.addAll(findjarFiles(libDir, includeJars));

private String libDir = PathKit.getWebRootPath() + File.separator + "WEB-INF" + File.separator + "lib"; 这里是针对web项目的, 而且对于一些embed的容器, libs是直接可能是直接在classpath里指定的。 就会出现问题

b1412 commented 9 years ago

1 java的static代码块会在class初始化而不是类实例化执行,所以这个情况避免不了 2 libDir目前是可以设置的,关于hardcode部分的代码历史有点久了,可能需要再改善一下了..

b1412 commented 9 years ago

2月2日更新3.1.3版本,请用最新版本classpath和lib均可配置