在加密的 linux 主目录下,我的 Kotlin 构建(使用 maven)失败并出现“java.io.FileNotFoundException(文件名太长)”。
文件名看起来像这样,长度为 298 个字符:
/home/niel/projects/project/bla/.../bla/.../bla/SomeTest$test name with spaces$1.class
测试看起来像这样:
@Test
fun `test with nice descriptive name`() {
// ...
}
getconf NAME_MAX/
返回 255
,比文件名的 298
多。
Scala 有一种方法可以使用 max-classfile-name
来处理这个问题选项。
在 Kotlin 中有解决这个问题的方法吗?
最佳答案
我一直在为同样的问题而烦恼。在这种描述性命名的测试方法中使用 lambda 时,问题会加剧(主要发生?)。
在我的例子中,我在 ext4 之上使用带有加密文件名的 ecryptfs。鉴于 ecryptfs 添加到文件名开头的有效载荷和填充,似乎 ~140 bytes is the usable maximum filename length .
我不知道 Kotlin 中有什么机制可以解决这个问题,但如果您使用的是 JUnit 5,则可以使用 @DisplayName更详细的测试名称的注释。
关于java - Kotlin:在具有加密主页的 Linux 上:java.io.FileNotFoundException(文件名太长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48338025/