Java"常量字符串太长"编译错误.只有使用Ant才会发生,而不是在使用Eclipse时

All*_*lan 45 java eclipse ant

我在一个类中有一些非常长的字符串用于初始化用户信息.当我在Eclipse中编译时,我没有收到任何错误或警告,并且生成的.jar运行正常.

最近,我决定创建一个使用的ant构建文件.每当我用ant编译同一个类时,我都会得到"常量字符串太长"的编译错误.我已经尝试了很多方法来在ant中设置java编译器可执行文件,以确保我使用与Eclipse中完全相同的版本.

我宁愿弄清楚如何在Ant中获得相同的成功编译,而不是尝试重新编写代码以动态连接字符串.

tea*_*bot 39

有人试图给你发一条消息:-)当你花时间摆弄编译器版本时,你可能已经从文本文件中加载了数据 - 这可能是它所属的地方.

查看:


mrs*_*dge 33

我发现我可以使用apache commons lang StringUtils.join(Object [])方法来解决这个问题.

public static final String CONSTANT = org.apache.commons.lang.StringUtils.join( new String[] {
  "This string is long", 
  "really long...", 
  "really, really LONG!!!" 
} );
Run Code Online (Sandbox Code Playgroud)

  • 当我需要快速测试时,我发现这是一个非常巧妙的解决方案 (2认同)
  • 谢谢你,你拯救了我的一天:) (2认同)
  • 我意识到这个答案并没有真正回答原始海报问题,它只是一种解决方法。我不会推荐它用于生产代码,仅用于快速和肮脏的测试目的。 (2认同)

Amo*_*shi 7

以上对我没有任何作用。我已经创建了一个名称为test.txt的文本文件,并使用以下代码读取了该文本文件

String content = new String(Files.readAllBytes(Paths.get("test.txt")));
Run Code Online (Sandbox Code Playgroud)


Jör*_*ann 5

类文件中字符串常量的长度在UTF-8编码中限制为2 ^ 16字节,这不应取决于所使用的编译器.也许你在ant文件中使用的是不同于eclipse的字符集,因此某些字符需要比以前更多的字节.请检查encoding您的javac任务属性.