由于一些奇怪的原因,我有一行代码陷入无限循环。 这是一行:
this.logger = LogManager.getLogger(getClass().getName());
一些上下文可能会有所帮助:
我有一台机器存储所有代码和java .class
文件。我通过sshfs
访问此计算机,并通过Eclipse直接处理.java
文件。
如果我登录远程计算机并执行我的类,代码将运行:
$ ssh remote-machine
$ cd /path/to/eclipse-project
$ export CLASSPATH="..." # A bunch of required libraries, including
# log4j-api-2.0-beta7.jar and log4j-core-2.0-beta7.jar
$ java path.to.MyClass
Welcome, please do stuff
>>>
如果我使用我机器上安装的sshfs
文件系统:
$ cd /mount-point/to/remote-machine
$ cd path/to/eclipse-project
$ export CLASSPATH="..."
$ java path.to.MyClass
<nothing happens>
我通过Eclipse调试确定LogManager#getLogger
是罪魁祸首。事实上,进一步深入,我发现有一个以index=2
开头的循环,只有在class==null
ClassLoaderContextSelector.java:86
时才会终止。