这似乎是一个简单的问题(如果是这样,请原谅),但经过 20 分钟的在线搜索,我没有找到任何合理的答案。
我有几个 cron 作业要通过 QuartzRunner 执行,现在我们调用第一个 FooBean
和第二个 BarBean
。 FooBean
每天 00:00 运行 6 (!) 小时,有时无法正确执行。仔细研究日志后我发现,当 BarBean
执行失败时,FooBean
也执行失败。 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
命名空间。直观上这似乎是一个错误配置,但我没有找到任何解释该问题的来源。
最佳答案
ConfigurationManagers getConfiguration-Method 尝试从类路径加载配置文件。该函数将给定名称与“_config.xml”连接起来。 在您的情况下,这将是“inventory_config.xml”,该文件应该在您的类路径(主/资源)上可用,因为 ConfigurationManager 尝试从那里加载它。
关于java - 为什么 getConfiguration 偶尔会抛出 File不能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358701/