Groovy说我的Unicode字符串太长了

时间:2011-07-26 19:57:01

标签: string unicode groovy utf-8 maxlength

作为打印表单的可能错误和繁琐的解决方案的一部分,我已经采用了MS-Word文档,保存为XML,并且我正在尝试将该XML存储为常规字符串,以便我可以$ {fillOutTheFormProgrammatically}

然而,由于MS-Word文档和它们一样大,字符串是113100个unicode字符,而Groovy说它限制为65536.有没有办法改变这个或者我是不是分裂了字符串?

Groovy - need to make a printable form

这就是我想要做的事。

更新:要清楚它的Groovy字符串太长了......我认为常规字符串可能都很好。要改变策略并在文件中添加一些字符串,我很容易找到%!%variable_name%!%然后执行.replace(...呃我觉得这里有一个新问题...

2 个答案:

答案 0 :(得分:6)

你是否直接在你的groovy代码中嵌入这个字符串? jvm本身对字符串常量的长度有限制,如果您对细节感兴趣,请参阅VM Spec

一个丑陋的解决方法可能是将字符串拆分为较小的部分并在运行时将它们连接起来。更好的解决方案是将文本保存在外部文件中并从代码中读取内容。您还可以将此文件与代码一起打包,并使用Class#getResourceAsStream从类路径访问它。

答案 1 :(得分:0)

你有什么例外?我不认为Groovy String限制为65536,因为它基本上是一个Java字符串。

听起来像是你试图在某个地方递归并达到65536的调用堆栈限制。

尽管如此,一次性将100K + char加载到内存中似乎有些过分了..

为什么不使用SAX解析器或类似方法解析XML以获得结果?

或者为什么不直接保存你需要的数据,而不是依赖数以千计的xml字符(我假设你只想要一小部分)?