【发布时间】:2018-04-01 21:30:11
【问题描述】:
给定班级org.popper.example.pages.Login
@Page(name="Login")
public interface Login {
}
导出到c:\pos\example.jar 和下面的servlet
public class PopperServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {
URLClassLoader ucl = new URLClassLoader(new URL[] {new File("c:/pos/example.jar").toURI().toURL()});
System.out.println(Arrays.asList(ucl.loadClass("org.popper.example.pages.Login").getAnnotations()));
}
public PopperServlet() throws MalformedURLException, ClassNotFoundException {
URLClassLoader ucl = new URLClassLoader(new URL[] {new File("c:/pos/example.jar").toURI().toURL()});
System.out.println(Arrays.asList(ucl.loadClass("org.popper.example.pages.Login").getAnnotations()));
}
}
以main方式运行代码显示预期结果
[@org.popper.fw.annotations.Page(name=Login)]
在tomcat中作为servlet运行代码找不到注解
[]
谁能告诉我为什么?
【问题讨论】:
-
和往常一样:看classloader-hierarchy new URLClassLoader(new URL[] {new File("c:/pos/example.jar").toURI().toURL()} , PopperServlet.class.getClassloader());成功了。但令人惊讶的是没有找到注释而是一个cnfe
标签: java tomcat annotations classloader