我有这个项目,无论出于什么原因我都在做,每当我执行程序并输入它所需的给定参数(我设置和所有)时,偶尔抛出IOException之前的其他东西是执行。这似乎是真的,因为我到处都有伐木工,而且没有一个被解雇。但是,似乎只是记录器没有被触发,因为当我查看我输出的json文件时,它表明它确实执行了第一步,只是没有记录器。我是log4j2的新手,所以它可能就是这样但我不确定(记录器没有被触发)但是当它不应该发生IOException时似乎很奇怪。因为当我在崩溃后立即再次执行它时,它运行得很好。
(旁注:这是在kotlin / jvm中,但这与使用JDK File类有关)
此处抛出异常:https://github.com/AlexCouch/projauto/blob/master/src/main/java/thinkingcouch/projauto/Save.kt#L114
我使用Intellij IDEA 2017.3在MacOSX High Sierra上。
答案 0 :(得分:0)
所以最终发生的事情是我在这里有这个函数用于隔离给定路径的某个部分以附加到新路径并且还保存到json以供以后使用
fun Path.splitPathWithContext(context: String): File{
val presplit = this.normalize()
logger.info("presplit: $presplit")
logger.info("context: $context")
if(presplit.toString() == context){
logger.info("Path and context are the same.")
return presplit.toFile()
}
val reg = Pattern.compile("\\b$context\\b")
val ret = presplit.toString().split(reg)[1]
logger.info("ret: $ret")
return File(ret)
}
解决方案是对上下文变量进行严格的模式检查,这样它就不会切换包含该字符串但不完全符合该字符串的单词,而且需要精确。这解决了我的问题。没有更多的问题,没有更多的路径,我也修复了我的记录器。我不知道究竟是什么导致它没有进行任何记录,但我通过将根级别设置为" all"来修复它。然后删除我所有其他记录器元素,因为我只需要这样做。