5

我有一个在开发模式下正确运行的 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 | 
+----------------------+-------+-------+
4

3 回答 3

3

这似乎是2.3.7 之前版本的 grails 错误, 但在 2.3.7 及更高版本中已修复。您有两种选择升级或按照以下步骤操作

  1. 查找文件大小大于 64K 的所有 gsp 页面。
  2. 添加 <% /* 注释以打破静态 gsp 块 */ %> 到静态页面的中间(将其添加到 html 标记的末尾,例如在</P>等之后)。

这将使 grails 认为它​​正在处理两个块并允许它被处理。

于 2014-11-19T20:37:16.813 回答
1

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

也许也可以帮助你。

干杯!

于 2012-06-12T18:46:45.803 回答
0

I never knew what the problem was, all I did is moved all the needed file to a brand new project and this error disappeared!

于 2012-08-09T05:10:31.480 回答