亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設置了靜態變量,但無法獲取-加載類的問題(可能嗎?)

設置了靜態變量,但無法獲取-加載類的問題(可能嗎?)

墨色風雨 2021-05-14 14:06:06
這對我來說很奇怪:1)我有一堂課public class Data {    private static String name;    public static String getName() {        return name;    }    public static void setName (String n){        Data.name = n;    }}在我的服務器(WAS liberty中的J2EE應用程序)啟動期間正確設置了此類變量名-我想在整個服務器生命周期中緩存此數據。2),但是當我點擊一個URL并最終調用一個執行getter的代碼時:Data.getName(); // this returns null??誰能想到一個可能的原因?也無法調試,我很沮喪。為了進一步說明我的問題,讓我展示一下我的項目結構:耳朵普通公豬戰爭1戰爭2我的Data.java在CommonJar中。在服務器啟動期間,通過在web.xml中注冊的偵聽器觸發,此Data.java在WAR1中進行了初始化,從這里我看到它已設置,并且我看到了使用Data.getName()的非null值。-這是我的我的原始帖子中的第1步。然后在WAR2中有一個寧靜的HelloWorld服務。當我調用此HelloWorld服務時,我看到Data.getName()返回null。-這是我原始帖子中的第2步。甚至不要想像簡單錯誤的語法類型之類的東西,因為事實并非如此。我的理論是:看來Data.java是在第1步中由WAR1中的類加載器加載的,然后在我的第2步中由WAR 2加載的,而第2步是由空的Data類加載的。為了驗證該理論是否正確,我將Data.java初始化步驟移至WAR2中(再次看到它已設置,并使用Data.getName()看到了非null值),不同之處在于,當我調用進入此HelloWorld服務后,我看到Data.getName()返回了預期的非null值。我稱此步驟為我的疑難解答突破,因為這似乎表明我的理論是正確的。(但是我無法通過在真正的問題修復程序中移動代碼來解決問題)然后,問題是如何修復以及如何直觀地查看哪個類加載器以及何時加載哪個類?同樣基于WAS Liberty文檔,默認的類加載器將是parentsfirst,這意味著Data.java應該由父級(在這種情況下為EAR)加載,因此我不應該將問題放在首位。任何人,請指導如何進一步發現并解決該問題?謝謝。
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您的getName()函數聲明為沒有返回類型,但是嘗試返回字符串。


查看完整回答
反對 回復 2021-05-19
  • 2 回答
  • 0 關注
  • 286 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號