局部变量丢失了

时间:2015-12-12 11:46:11

标签: java

我面临一个奇怪的错误。在服务器启动期间,我在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)

请帮我摆脱这个。

3 个答案:

答案 0 :(得分:0)

这当然取决于你的服务器。

使用一些静态变量。

答案 1 :(得分: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作为静态类引用,并在首次将其声明为变量时设置和设置静态字符串

答案 2 :(得分:0)

这可能由于使用多个类加载器而发生,因为public static function boot() { parent::boot(); //delete associated file static::deleting(function($docUpload){ try{ $filepath = public_path('uploads/').$docUpload->filepath; if(file_exists($filepath)) { unlink($filepath); } } catch(\Exception $e) { //some error while deleteing \Log::info('Error deleting: '.$filepath); \Log::debug($e); } }); } 变量在多个类加载器中不是全局的。即如果在2个不同的类加载器中加载相同的类,那么您将拥有2个静态变量副本。