gpt4 book ai didi

java - 无法从tomcat中自定义类加载器加载的类中获取注释

转载 作者:搜寻专家 更新时间:2023-11-01 02:10:02 26 4
gpt4 key购买 nike

给定类 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 运行代码没有找到注释

[]

谁能告诉我为什么?

最佳答案

一如既往:关注类加载器层次结构!

new URLClassLoader(new URL[] {new File("c:/pos/example.jar").toURI().toURL()}, PopperServlet.class.getClassloader());

成功了。但令人惊讶的是,没有找到注释而是 ClassNotFoundExceptionNoClassDefError,这就是我在加载类时找不到注释时的预期...

关于java - 无法从tomcat中自定义类加载器加载的类中获取注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com