Kotlin:在带有加密主页的linux上:java.io.FileNotFoundException(文件名太长)

时间:2018-01-19 09:38:52

标签: java kotlin

在加密的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有解决方案吗?

3 个答案:

答案 0 :(得分:2)

我在同一个问题上碰到了头脑。当在这种描述性命名的测试方法中使用lambda时,问题会加剧(主要发生?)。

在我的情况下,我在ext4之上使用带有加密文件名的ecryptfs。给定ecryptfs在文件名开头添加的有效负载和填充,似乎~140 bytes is the usable maximum filename length

我不知道Kotlin中有解决此问题的机制,但如果您使用JUnit 5,则可以使用@DisplayName注释来获得更详细的测试名称。

答案 1 :(得分:1)

您可以使用@JvmName注释来重命名我相信的测试。请参阅referenceapi

答案 2 :(得分:0)

当您进行测试的卷未加密时,它是否有效?这似乎是第一个合乎逻辑的事情,因为家庭卷加密具有特殊的特征eCrypt details