我正在研究一些行为奇怪的代码。代码使用Java反射属性,从JSON文件加载方法名称。在Linux中完美运行,但是,在同一IDE中导入和运行相同的代码,代码在Websphere Application服务器设置的相同版本和配置文件中运行,它们都通过文件服务器安装使用相同的源文件。应用程序的其他部分在两种环境中都可以毫无问题地操作这些文件。然而,在某种程度上,在Windows中,它无法从Linux文件中加载方法。单步执行Windows中的调试器我发现在尝试动态加载方法时发生了空指针错误,而在Linux中单步执行代码只是在Windows被卡住而没有问题的情况下进行。我从指向由于加载失败而不存在的方法的应用程序中获得此空指针错误:
java.lang.NullPointerException
at com.mpi.factory.ToolStateFactory.getToolStateExtended(ToolStateFactory.java:19)
at com.mpi.factory.ToolStateFactory.getToolStateExtended(ToolStateFactory.java:33)
at com.mpi.factory.ToolStateFactory.getToolStateExtended(ToolStateFactory.java:41)
鉴于JRE应该是可移植的,并且在它运行的环境中并不重要,我怀疑它与操作系统有关。以前有没有人遇到过这个问题?我想知道它是否需要在操作系统级别或Java安全设置中解决?我知道Windows在驱动挂载方面比Linux更麻烦。我想知道在J2EE项目中尝试使用Java中的反射是否是一个明显的,众所周知的问题。我真的不认为这与Webpshere或项目设置(类路径,部署描述符等)有关,因为它们在两种环境中都是相同的。无法在网上找到关于这个怪癖的任何内容。