我面临一个奇怪的错误。在服务器启动期间,我在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)
这当然取决于你的服务器。
使用一些静态变量。
答案 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个静态变量副本。