2015-12-12 74 views
-1

我遇到了一個奇怪的錯誤。在服務器啓動期間,我在java類的init()方法中初始化了一組變量。我可以看到這個值在服務器啓動過程中持續存在。但是,當我嘗試通過WebUI登錄時,這些本地變量缺失。局部變量丟失

但是,如果我將變量分配給靜態塊,它將保持打開狀態。

我不知道這會如何發生。任何指針都會有所幫助。

Java版本:JRE1.7.0_40

我的一段代碼看起來像

ClassA.java

public class ClassA { public static String testString; public static 
    void init() throws Exception { 
    testString = "testSTring222"; } } 

ClassB.java

ClassA.init(); System.out.println(ClassA.testString) 

請幫我擺脫這一點。

回答

0

這當然取決於你的服務器是什麼。

使用一些靜態變量。

0

A類

public class ClassA 
{ 
    public static String testString = "testSTring222"; 
    public static void main(String[] args) 
    { 

    } 
} 

B類

public class ClassB 
{ 
    static ClassA cA = new ClassA(); 
    public static void main(String[] args) 
    { 
     System.out.println(cA.testString); 
    } 
} 

所以,你應該參考Class A作爲一個靜態類,使和設置靜態字符串時,你首先聲明它作爲一個變量

0

這可能是由於使用多個因爲static變量在多個類加載器中不是全局的。即如果在兩個不同的類加載器中加載了相同的類,那麼你將擁有2個靜態變量副本。