<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    9910

    單飛

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    不同classloader加載的class造成isAnnotationPresent失效

    @ComponentClass
    public class Home {
    }
    Class clazz = loader.loadClass("Home");??? //loader 和現在運行的classLoader不是相同的。
    flag = clazz.isAnnotationPresent(ComponentClass.class);//返回false
    原因:
    Class.clss
    ?public boolean isAnnotationPresent(
    ??????? Class<? extends Annotation> annotationClass) {
    ??????? if (annotationClass == null)
    ??????????? throw new NullPointerException();

    ??????? return getAnnotation(annotationClass) != null;
    ??? }


    public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {
    ??????? if (annotationClass == null)
    ??????????? throw new NullPointerException();

    ??????? initAnnotationsIfNecessary();
    ??????? return (A) annotations.get(annotationClass);
    ??? }
    private transient Map<Class, Annotation> annotations;

    而不同的ClassLoader 加載的ComponentClass不是同一個對象,所以用Class作為id不合適,應該使用String。
    解決辦法:

    ComponentClass.class也使用loader加載這樣才能保證一致性。
    banq詳細的解答了這個問題:
    http://www.jdon.com/jive/article.jsp?forum=91&thread=15456

    Classloader存在下面問題:
    在一個JVM中可能存在多個ClassLoader,每個ClassLoader擁有自己的 NameSpace。一個ClassLoader只能擁有一個class對象類型的實例,但是不同的ClassLoader可能擁有相同的class對象 實例,這時可能產生致命的問題。如ClassLoaderA,裝載了類A的類型實例A1,而ClassLoaderB,也裝載了類A的對象實例A2。邏輯 上講A1=A2,但是由于A1和A2來自于不同的ClassLoader,它們實際上是完全不同的,如果A中定義了一個靜態變量c,則c在不同的 ClassLoader中的值是不同的。

    Thread{
    ??? ??? ??? ClassLoader cl = Thread.currentThread().getContextClassLoader();
    ??? ??? ??? URL[] urls = ...
    ??? ??? ??? ClassLoader ncl = new URLClassLoader(urls, cl);//構造新的
    ??? ??? ??? Thread.currentThread().setContextClassLoader(ncl);
    ??? ??? ??? do do do do;
    ??? ??? ??? Thread.currentThread().setContextClassLoader(cl);//執行完恢復
    }
    posted on 2006-12-20 20:35 單飛 閱讀(479) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 免费下载成人电影| 日本视频一区在线观看免费| 日韩免费高清一级毛片在线| 亚洲成无码人在线观看| 性xxxx视频免费播放直播| 久久精品国产亚洲av麻豆| 国产一区二区免费视频| 亚洲国产精品福利片在线观看| a成人毛片免费观看| 西西人体44rt高清亚洲| 99久久国产免费中文无字幕| 亚洲精品乱码久久久久久下载| 免免费国产AAAAA片| 亚洲午夜福利在线视频| 国产一区二区三区免费看| 午夜免费国产体验区免费的| 国产成人精品亚洲精品| 无码日韩精品一区二区免费暖暖 | 国产国拍亚洲精品福利| 久久久精品国产亚洲成人满18免费网站 | 永久免费精品影视网站| 亚洲精品自产拍在线观看| 久久中文字幕免费视频| 亚洲高清资源在线观看| 成人a免费α片在线视频网站| 免费大片av手机看片高清| 中文字幕不卡亚洲 | 精品国产免费观看| 四虎影视永久在线精品免费| 亚洲午夜福利在线观看| 国内精自视频品线六区免费| 亚洲精品久久久久无码AV片软件| 亚洲午夜爱爱香蕉片| 蜜桃成人无码区免费视频网站 | 国产亚洲综合精品一区二区三区| 中文字幕中韩乱码亚洲大片| 最近中文字幕完整免费视频ww| 亚洲精品国产精品| 亚洲av无码一区二区三区不卡| 岛国av无码免费无禁网站| 永久免费观看黄网站|