“错误编译错误:编码字符串太长:”进行构建时

时间:2012-06-12 16:12:46

标签: grails groovy war

我有一个在开发模式下正确运行的Grails项目但是当我尝试创建一个war文件时,它会给我以下消息并停止构建

| Compiling 1 source files
| Compiling 1 source files.
| Compiling 1 source files..
| Compiling 1 source files...
| Compiling 1 source files....
| Compiling 1 source files.....
| Compiling 16 GSP files for package [ProjectName]
| Compiling 16 GSP files for package [ProjectName].
| Error Compilation error: encoded string too long: 108421 bytes

Grails没有给我任何关于哪个GSP或线路有问题的信息,有人看到过这种情况吗?

以下是grails的统计数据,我想说这是一个相当小的项目

+----------------------+-------+-------+
| Name                 | Files |  LOC  |
+----------------------+-------+-------+
| Controllers          |     6 |   624 | 
| Domain Classes       |     6 |   109 | 
| Java Helpers         |     1 |    96 | 
| Unit Tests           |    12 |   565 | 
| Scripts              |     1 |     4 | 
+----------------------+-------+-------+
| Totals               |    26 |  1398 | 
+----------------------+-------+-------+

3 个答案:

答案 0 :(得分:2)

似乎这是版本prior to 2.3.7的grails错误,但它已在2.3.7及更高版本中修复。 您有两个选项升级或按照以下步骤

  1. 查找文件大小超过64K的所有gsp页面。
  2. 添加&lt;%/ *注释以打破静态gsp块* /%&gt;到静态页面的中间(将其添加到html标记的末尾,例如在</P>之后等)。
  3. 这将使Grails认为它处理了两个块并允许它被处理。

答案 1 :(得分:0)

我之前见过这个。正是@tim_yates所评论的!重构了一些gsp [包括例如],一切都很好。另外,对此进行一些研究后,我发现了一些有关DataOutputStream.java的有趣内容。它似乎有一个64kb limit的String对象。

也许this也可以帮到你。

干杯!

答案 2 :(得分:0)

我从来不知道问题是什么,我所做的就是把所有需要的文件移到一个全新的项目中,这个错误就消失了!