为什么getConfiguration偶尔抛出File不能为null?

时间:2019-05-29 10:44:17

标签: java

这似乎是一个简单的问题(如果是这种情况,请原谅),但是经过20分钟的在线搜索,我没有找到任何明智的答案。

我有几个要通过QuartzRunner执行的cron作业,现在我们将其称为第一个FooBean和第二个BarBeanFooBean每天00:00运行6(!)小时,有时无法正确执行。仔细研究日志后,我发现FooBean执行失败时BarBean执行失败。 BarBean每天在03:00执行,有时会抛出:

 22866 java.lang.NullPointerException: File cannot be <null>
 22867     at org.jconfig.FileWatcher.<init>(FileWatcher.java:54)
 22868     at org.jconfig.handler.AbstractHandler.addFileListener(AbstractHandler.java:39)
 22869     at org.jconfig.ConfigurationManager.addFileListener(ConfigurationManager.java:180)
 22870     at org.jconfig.ConfigurationManager.getConfiguration(ConfigurationManager.java:122)

有时它不会抛出它,然后正确执行FooBean。如果BarBean失败,则日志将在十分钟内重复显示某些事务死锁问题,然后JDBC连接失败一次又一次重复近三个小时。我不知道涉及哪个文件。引发错误的行如下所示:

    Configuration config = ConfigurationManager.getConfiguration("inventory");

org.jconfig命名空间在这里涉及。直观上看,这似乎是一个错误的配置,但是我没有找到任何解释此问题的消息来源。

1 个答案:

答案 0 :(得分:1)

ConfigurationManagers getConfiguration-Method尝试从您的类路径中加载配置文件。该函数将给定名称与“ _config.xml”连接起来。 在您的情况下,这将是“ inventory_config.xml”,因为ConfigurationManager尝试从那里加载该文件,所以该文件应该在您的类路径(主/资源)上可用。