2013-06-13 70 views
3

我正在eclipse中处理JavaScript项目。静态html和javascript文件需要访问我的服务的宁静端点,所以我将这些端点放在java项目中,这样我就可以访问它们而不会出现跨域问题。但是,突然之间,如果我尝试保存对我的html文件的更改,除非停止运行java应用程序,否则我不能这样做。无法在eclipse中保存.html文件

事件的顺序是这样的:

Run java web app with Jetty 

Can save changes to html file. 

Open html file in chrome with url: http://127.0.0.1:8901/myapp/myapp-admin.html 

Cannot save changes to html file. 

Close chrome. 

Still can't save changes. 

Stop jetty running in eclipse. 

Can save changes. 

当我试图挽救它提供了以下错误:

Save could not be completed. Try File > Save As... if the problem persists. 

Reason: 
Could not write file: 
C:\{path to file}\myapp-admin.html 

(The requested operation cannot be performed on a file with a user-mapped section open) 

如果我尝试使用另存为以覆盖该文件,它仍然无法正常工作,出现错误:

Save could not be completed. Could not write file: {etc.} 

这里的HTML文件:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> 
<head> 


<title>myapp Admin</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
    <h1>myapp</h1> 

</body> 
</html> 

我改变的唯一的事情是如何将这些映射到web.xml中。基本上,在我被渲染他们使用弹簧控制器弹簧方式等

现在我使它们静态,使用:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 

但我不知道为什么会导致这种问题的种类。

春天映射,像这样:

​​

谁能帮我找出什么是错在这里,如果有一种方式来获得它的工作就像我希望它?

回答

7

您在Windows上遇到经典的文件锁定问题。 (这在unix,linux或osx的任何风格上都不会发生)

请按照troubleshooting locked files on windows中的指导原则为您的特定webapp禁用Jetty的高级性能功能。

(链接到码头9文档,因为你没有指定要使用哪个码头的版本)

+0

你真棒。我很惊讶,尽管我在Google上搜索时没有遇到这种解决方案。你会认为它会更容易找到。无论哪种方式,修改webdefault.xml为我解决了这个问题。 (我使用Jetty 8,顺便说一句)。 – CorayThan

0

我通过从Jetty切换到Tomcat来解决此问题。我只是使用Maven插件,所以开关是30秒。我不明白为什么你需要专门配置这个功能,因为它是在开发环境中进行热部署的一项功能。为此,我不认为Jetty解决了问题,而是创建了一个新问题。