jetty java文件无法删除 java文件占用 delete无效 运行时锁定静态资源的解决方法

前几天jetty下发现java无法删除文件,文件操作后一直被jvm占用,无奈换了tomcat问题消失。

今天又想起来,尝试网上的解决方法,经本人试验,直接修改配置文件有时不能生效,具体原因不清楚,建议使用直接修改web.xml文件

下文中的红色部分

  文件被锁定是由于在使用windows系统时,jetty默认在内存中映射了这些文件,而windows会锁定内存映射的文件。解决的办法就是修改jetty的配置,让其在启动server时将useFileMappedBuffer标志位设置为false。

  设置方法有两种,一种是修改webdefault.xml文件中的useFileMappdBuffer标志位。webdefault.xml文件是jetty启动服务的配置文件,其先于项目中的WEB-INF/web.xml文件被加载。 jetty包中默认有这个文件,可以将其提取出来,保存在项目根目录下,并修改useFileMappedBuffer节点。

1
2
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>

  然后在build.gradle加入对此文件的引用。

1
2
3
[jettyRun, jettyRunWar,jettyStop]*.with {
  webDefaultXml = file("${rootDir}/webdefault.xml")
}

  第二种方法是修改项目中的WEB-INF/web.xml文件,在其中加入这个节点。

1
2
3
4
5
6
7
8
9
<servlet>
    <!-- Override init parameter to avoid nasty -->
    <!-- file locking issue on windows.         -->
    <servlet-name>default</servlet-name>
        <init-param>
            <param-name>useFileMappedBuffer</param-name>
            <param-value>false</param-value>
        </init-param>
</servlet>
时间: 2024-11-06 03:50:23

jetty java文件无法删除 java文件占用 delete无效 运行时锁定静态资源的解决方法的相关文章

Java编译时报错“错误: 找不到或无法加载主类”的解决方法

一.问题描述 java在执行的时候,会遇到这样的报错,编译可以正常通过,只是执行java命令时会报错,例如: G:\1\JavaPrac\tankproject\src\tank1>javac TankGame1.java G:\1\JavaPrac\tankproject\src\tank1>java TankGame1错误: 找不到或无法加载主类 TankGame1 二.解决方法 主要是配置环境变量可能有问题,着重检查环境变量. 环境变量配置: 第一步: "变量名":J

用jetty部署iMatrix平台源码时,静态资源应该放到哪里

大家在网站中下载源码之后,在eclipse中部署源码,用jetty插件做服务器. 静态资源(imatrix-static)给刚到tomcat里面的webapps里面.放的事war包,在官网中就可以下载.如下图配置静态资源在tomcat服务器中的位置. Ps 一定要下载站对应版本的war包.每个配置文件中关于静态资源的配置都有修改. 用jetty部署iMatrix平台源码时,静态资源应该放到哪里,布布扣,bubuko.com

java程序实现删除本地文件

import java.io.File; public class Test { public static void main(String args[]) {    Test t = new Test();    delFolder("d:/test");    System.out.println("OK"); } // 删除文件夹 // param folderPath 文件夹完整绝对路径 public static void delFolder(Strin

文件无法删除java.io.IOException: Unable to delete

疑问:1.为什么调用file.delete()方法时,返回值为false. 2.为什么调用Guava工具jar包中的Files.move(from,to) ,报异常:java.io.IOException: Unable to delete 执行代码程序前需要创建一个test.txt文件. 上代码: package indi.johnny.test007; import java.io.File; import java.io.FileInputStream; import java.io.In

mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法

发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久,终于找到原型所在,发现网上很多资料都写的都不太多,自己记录一下.先看看工程的位置和目录. 我的eclipse 工作空间位置是: /Users/zhangyunfei/workspace_java 我的工程名字叫:hellodemo 我的main class 的package name (包名)为: hellod

删除指定文件夹中除保留的文件外的所有文件批处理 删除指定文件夹下的空文件夹,包括子目录批处理

删除指定文件夹中除保留的文件外的所有文件批处理 @echo off set "ext= sln csproj" for /f "delims=" %%a in ('dir /b/s/a-d *.*') do ( set .= if /i not "%%~nxa"=="%~nx0" ( for %%i in (%ext%) do if /i "%%~xa"==".%%i" set .=.

win10文件强制删除的文件寻回法子

文件误删除是很常见的数据恢复故障.在文件误删除后如何恢复数据就显的尤为重要了,首先我们需要明白,在文件误删除后不能往要恢复的误删文件所在的分区,存入任何新的文件,否则数据覆盖了就无力回天了.接下来我们还需要了解下具体如何恢复文件误删除的文件,具体请看正文了解. 工具/软件:AuroraDataRecovery 步骤1:先下载并解压程序运行后,直接双击需要恢复的分区,接着右击软件图标选择<以管理员身份运行>步骤2:程序运行后,直接双击需要恢复的分区步骤3:等待程序扫描完毕,一般需要几分钟时间.步

java Web程序使用wro4j合并、压缩js、css等静态资源

在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度,大大提升了用户体验. 所以,互联网各类网站,会通过各种手段,对静态文件进行合并.压缩,动静分离,使用CDN加速等.以此达到网站访问速度的优化.everycoding.com官网使用的是Java语言开发.因此使用了Java 方面的第三方Jar:wro4j来压缩Js.CSS.本文主要介绍Java We

Java运行时数据区域(堆 栈 方法区 常量池)

运行时数据区域 (1)程序计数器(program counter register) 一块较小的内存空间 当前线程所执行的字节码的行号指示器,字节码解释器在工作的时候就是通过改变程序计数器的值来选取下一跳要执行的指令 多线程环境下,线程轮流切换执行,程序计数器保证线程切换之后能恢复到正确的位置 每个线程都有一个独立的程序计数器 线程私有 没有任何异常 (2)虚拟机栈(stack) 虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的过程中都会创建一个栈帧,用于存储局部变量表.操作数栈.动