<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 單飛 閱讀(481) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 午夜不卡AV免费| 美女免费视频一区二区三区| 午夜dj在线观看免费视频| 久久免费99精品国产自在现线| 老司机亚洲精品影院| 亚洲精品午夜无码专区| 国产成人在线免费观看| 免费观看美女裸体网站| 无人在线直播免费观看| 久久精品国产免费观看| 久久aa毛片免费播放嗯啊| 免费无码一区二区三区蜜桃| 一出一进一爽一粗一大视频免费的 | 性做久久久久免费观看| 性一交一乱一视频免费看| 免费人成在线观看69式小视频| 国产精品久久永久免费| 在线观看免费人成视频| 免费看片免费播放| 亚洲国产精品无码久久青草| 久久精品国产精品亚洲艾草网美妙 | 亚洲精品动漫在线| 亚洲欧洲无码一区二区三区| 亚洲国产精品嫩草影院| 亚洲高清免费视频| 麻豆成人久久精品二区三区免费| 免费看国产成年无码AV片| 免费女人18毛片a级毛片视频| 亚洲XX00视频| 亚洲精品动漫在线| 两个人看的www视频免费完整版| 在线免费观看国产| 亚洲国产精品碰碰| 亚洲嫩草影院在线观看| 有色视频在线观看免费高清在线直播| 久久久久成人片免费观看蜜芽| 日韩免费一级毛片| 亚洲精品电影天堂网| 久青草视频97国内免费影视| 免费可以在线看A∨网站| 91亚洲国产成人精品下载|