Grails &引用;错误编译错误:编码字符串太长:";建造时

Grails &引用;错误编译错误:编码字符串太长:";建造时,grails,groovy,war,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 fil

我有一个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或line有问题的信息,有人看到过这种情况吗

这里是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 | 
+----------------------+-------+-------+

我以前见过这个。正是@tim_yates所评论的!重构了一些普惠制[例如包括],一切又恢复正常。另外,对此做了一些研究,我发现了一些关于DataOutputStream.java的有趣的事情。它似乎有一个字符串对象

也许你也能帮上忙


干杯

我从来不知道问题出在哪里,我所做的只是将所有需要的文件移到一个全新的项目中,这个错误就消失了

这似乎是grails版本的bug,但在2.3.7及更高版本中已修复。 您有两个升级选项,或者按照以下步骤进行升级

  • 查找文件大小大于64K的所有gsp页面
  • 添加到静态页面的中间(将其添加到html标记的末尾,例如

    等之后)
    这会让grails认为它正在处理两个块,并允许它被处理。

    看起来你有一些大量的静态HTML页面或其他东西在那里?@tim_yates不是真的,大多数视图都是通过脚手架呈现的。最大的GSP有65行。@tim_-yates有没有办法找出是什么GSP/文件导致了这个问题?没有大的html静态文件(统计报告中没有计算)?@tim_-yates甚至没有一个html文件…不太可能,大多数视图都是通过脚手架呈现的。最大的普惠制有65条线,真奇怪。查看workdir/gspcomfile并查看最后编译的文件。这可能会给你一些线索……很抱歉,这个workdir应该位于哪里?$HOME/.grails/(version)/projects/projectname/gspcomfile,但你可以在BuildConfig.groovy中使用grails.project.work.dir变量指定它。生成的唯一文件是gsp\u projectnamererror\u gsp.groovy,这是一个2KB的文件,我甚至没有自定义错误页面,所以这是默认文件!!