我正在使用Grails 2.4.0.RC1(和JDK 1.7.0_55),每当我浏览任何使用web-app文件夹中的javascript文件的应用程序视图时,java进程似乎都会锁定这些文件。 因此,当我尝试保存更改时,我无法处理任何这些javascript文件,Windows 7将不允许我这样做。
我使用Process Explorer检查哪个进程正在锁定文件,它确实是运行grails应用程序的java进程。
起初我认为这个问题可能与新的资产管道有关:我正在使用的1.8.7插件。所以我卸载它以检查问题是否仍然存在......并且确实存在。
同样的应用程序在Grails 2.3.5上运行就好了(虽然我们也使用了较旧的JDK ......我必须查看JDK 1.7.0_55)。
顺便说一下,Grails的旧版本发生了类似的事情:https://jira.grails.org/browse/GRAILS-3585
是否有人遇到同样的问题?
更新1:
我已经测试了在不同版本的java上运行应用程序的这个问题,这些是我的结果:
Win7-64bits, grails2.4.0.RC1, jdk1.7.0_55 -> PROBLEM OCCURS
Win7-64bits, grails2.4.0.RC1, jdk1.7.0_25 -> PROBLEM OCCURS
Win7-64bits, grails2.4.0.RC1, jdk1.6.0_18 -> OK
更新2:
我创建了一个空白应用程序(默认情况下使用Tomcat),一切正常。 使用jetty-plugin(使用Jetty8)的相同空白应用程序会出现问题。 我现在正在进一步调查此事。
答案 0 :(得分:0)
我发现了问题。 它确实与jetty-plugin有关。
在使用Jetty7的插件2.0.3的官方版本上,锁定问题不存在。但是这个插件使用的是旧版本的Jetty,所以没用。
在为运行Jetty8而创建的插件的分支上: https://github.com/grails-plugins/grails-jetty/tree/2.0.x ......问题就出现了。
另外,在新的grails jetty插件版本3.0.x(使用Jetty 9.0.x)上,问题也存在!
更新1:
看看: Jetty locking static files in Windows 显然" useFileMappedBuffer"必须将Jetty的init-param设置为false以防止文件锁定。 您可以使用本地版本的jetty插件并在[jetty-plugin] /grails-app/conf/webdefault.xml
上修改上述属性