`

jetty启动后无法修改静态文件的问题

 
阅读更多

今天碰到问题了。

在maven搭建的工程中,使用jetty做热部署,修改了演示文件无法保存,蛋疼了~~你说就改下静态文件还不让,非得要关掉jetty后修改保存!好事郁闷,google一下吧,哈哈

一大堆这样的问题。

1 首先找到了下边的描述

 

jetty启动后,如果修改javascript文件,将不能保存,使调试很麻烦。这是因为使用了CACHE,JETTY说是WINDOWS下的一个限制。可以通过如下方法修正: 

解压出jetty.jar中的org/mortbay/jetty/webapp/webdefault.xml文件,将这一选项由true改为false,另存到src/main/resources目录,或者其它自选目录。 

<init-param> 
<param-name>useFileMappedBuffer</param-name> 
<param-value>true</param-value> <!-- change to false --> 
</init-param>


把修改后的webdefault.xml文件跟pom.xml放在一起

修改pom.xml里的Jetty Plugin的配置,加入webdefault.xml

...
<plugin>
 <groupId>org.mortbay.jetty</groupId>
 <artifactId>maven-jetty-plugin</artifactId>
 <version>6.1.7</version>
 <configuration>
 <contextPath>/</contextPath>
 <webDefaultXml>webdefault.xml</webDefaultXml>
 ...
 </configuration>
 ...
</plugin>
...
 
但是,照做不行,报错了,请看错误
  1. java.lang.ClassNotFoundException: org.mortbay.jetty.servlet.DefaultServlet 
  2.         at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
  3.         at java.security.AccessController.doPrivileged(Native Method) 
  4.         at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
  5.         at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
  6.         at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
  7.         at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428) 
  8.         at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:381)
 
很蛋疼吧,没有找到类,那么这个类是什么,仔细观察,是叫jetty包下的。
但是我们用的版本是什么呢 7.6 
请注意了,这个时候的jetty 已经投入到eclipse的怀抱中了。哈哈
所以当然在公司内部使用groupId和ArtifactId也发生了变化肯定就变了啊
修改webdefault.xml文件
  1. <servlet> 
  2.         <servlet-name>default</servlet-name> 
  3.         <!-- <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> --> 
  4.         <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
  5.         <init-param> 
  6.             <param-name>useFileMappedBuffer</param-name> 
  7.             <param-value>false</param-value> 
  8.         </init-param> 
  9.         <load-on-startup>0</load-on-startup> 
  10.     </servlet> 
 
问题解决
 
附上项目中使用的server 代码
    public static final String BASE_URL = "http://localhost:8888/";

    public static void main(String[] args) throws Exception {

        try {
            Server server = buildNormalServer(8888, "/");
            server.start();
            server.join();
            System.out.println("Server running at " + BASE_URL);
            System.out.println("Hit Enter to reload the application");
            // 等待用户输入回车重载应用.
            while (true) {
                char c = (char) System.in.read();
                if (c == '\n') {
                    System.out.println("Application reloading");
                    server.stop();
                    server = buildNormalServer(8888, "/");
                    server.start();
                    server.join();
                    System.out.println("Application reloaded");
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }

    /**
     * 创建用于正常运行调试的Jetty Server, 以src/main/webapp为Web应用目录.
     */
    public static Server buildNormalServer(int port, String contextPath) {
        Server server = new Server(port);
        WebAppContext webContext = new WebAppContext("./src/main/webapp", contextPath);
        webContext.setDefaultsDescriptor("./webdefault.xml");
        webContext.setClassLoader(Thread.currentThread().getContextClassLoader());
        server.setHandler(webContext);
        server.setStopAtShutdown(true);
        return server;
    }
 
 

 

分享到:
评论

相关推荐

    Maven Jetty 插件的问题(css/js等目录死锁)的解决

    然而,在使用Maven Jetty插件进行项目构建和部署时,可能会遇到一个常见问题:当修改了HTML、CSS或JavaScript文件后,这些文件被浏览器加载后会出现“死锁”现象,导致文件无法被进一步修改和保存。 #### 问题分析 ...

    main方法启动jetty

    在给定的压缩包文件`StartJetty`中,可能包含了实现上述步骤的Java源代码,你可以根据自己的需求进行修改,如设置不同的端口、添加更多的Servlet或过滤器、配置日志等。这样的启动脚本对于快速启动和测试本地Web应用...

    tomcate和jetty虚拟目录配置方法

    Tomcat的虚拟目录主要通过修改`conf/server.xml`文件来实现。在`&lt;Host&gt;`元素下添加`&lt;Context&gt;`元素来定义新的虚拟目录。例如: ```xml &lt;!-- 添加虚拟目录 --&gt; ``` 这里的`path`属性定义了虚拟目录的URL路径,`...

    jetty9.2.3

    通过访问`http://localhost:8001/pdfexample/example.htm`,用户可以在浏览器中查看这个示例,展示了Jetty作为Web服务器的能力,它可以服务于HTML页面和其他类型的静态文件。 总的来说,Jetty 9.2.3是一个功能强大...

    jetty指导书

    静态部署是指将应用程序文件直接放置在Jetty的`webapps`目录下,Jetty会在启动时自动检测并部署这些应用程序。 **5.3 动态热部署** 除了静态部署外,Jetty还支持动态热部署,即在Jetty运行时动态地添加、删除或...

    jetty的安装与使用

    Jetty支持WebSocket、HTTP/2、连接池、静态文件缓存等多种高级特性。你还可以通过模块化扩展Jetty的功能,例如添加对JSP的支持。 总的来说,Jetty以其轻量、高效和灵活的特性,在Java Web开发中占有一席之地。无论...

    java web开发部署神器--jetty插件

    - 静态文件服务:Jetty可以高效地处理静态资源请求,如HTML、CSS、JavaScript等。 - WebSocket支持:Jetty提供了对WebSocket协议的全面支持,使得双向通信成为可能。 - SSL/TLS:Jetty可以配置为支持HTTPS,提供安全...

    jetty软件包升级版本

    7. **启动新版本**:使用新版Jetty启动服务器,检查日志输出以确保所有组件正常工作。 8. **测试**:全面测试应用程序的功能和性能,确保一切正常。这包括静态资源、Servlet、过滤器、监听器、WebSocket、安全设置...

    Jetty权威指南.pdf

    Handler可以通过组合的方式来实现复杂的功能,例如静态文件服务、动态内容生成等。 **3.4 Server和ThreadPool** - **Server**:作为Jetty的核心管理组件,负责启动和停止Jetty服务器,以及管理各个子组件。 - **...

    jetty-jdk7使用版本

    10. 扩展性:Jetty的设计允许通过插件机制轻松扩展功能,如静态文件服务、JMX监控、Jetty-Maven插件等,满足各种应用场景的需求。 在实际项目中,结合JDK7的特性和Jetty的功能,可以构建高效、灵活的Web服务。而...

    jetty-6.1.26官方正式版本.zip

    4. **配置与使用**:在Jetty 6.1.26中,可以通过修改`etc/jetty.xml`或`etc/webdefault.xml`等配置文件来定制服务器行为。启动脚本`jetty.sh`可以配置JVM参数和服务器选项。 5. **Servlet支持**:Jetty 6.1.26支持...

    jetty发布webService

    修改后,只需保存文件,Jetty会自动重新加载变化,无需重启服务器,提高开发效率。 7. 部署: 当开发完成并准备部署时,可以使用Maven的`package`目标打包成WAR文件,然后将此文件部署到生产环境的Jetty服务器或...

    JettY 部署Web应用程序.doc

    Jetty启动时会自动检测并启动这些应用,上下文路径默认为文件夹名或WAR文件名(如果名为`root`,则上下文路径为`/`)。静态部署意味着一旦服务器启动,就不会再检查`webapps`目录的更改,除非服务器重启。 2. **...

    maven jetty

    Maven Jetty插件的一大优势是支持热部署,即在代码修改后,无需重启服务器即可看到改动的效果。当项目中的源文件发生变化时,插件会自动重新编译并更新到Jetty服务器。 ** WebApp目录结构 ** 在提到的"WebApp"这个...

    jetty 插件

    6. **资源管理**:Jetty插件可以管理Web应用所需的静态资源,如HTML、CSS、JavaScript文件,以及图片和图标(如压缩包中的`icons`目录)。 7. **库依赖**:`lib`目录通常包含插件运行所需的各种依赖库,确保Jetty能...

    经典jetty应用于web项目的开发

    这是因为Jetty支持观察文件系统变化并自动重新加载修改过的类或资源,极大地提升了开发效率。对于快速迭代的项目,这种特性非常关键,可以避免频繁的重启操作浪费时间。 Jetty的模块化设计意味着你可以根据项目需求...

    安装jetty相关指南

    对于目录结构,创建一个与WAR文件同名的目录,并将应用的静态文件、WEB-INF目录等放入其中。 **六、配置Jetty** 6. Jetty的配置主要通过修改`etc/jetty.xml`或创建特定的XML配置文件实现。比如,你可以更改服务器...

    jetty-distribution-9.0.6.v20130930

    - **第三方模块**:社区提供了众多扩展模块,如GWT支持、静态文件服务增强等,丰富了Jetty的功能。 总结来说,Jetty 9.0.6.v20130930是一个强大且灵活的Web服务器和Servlet容器,尤其适用于资源有限的安卓环境,...

    jetty1.3.3

    Eclipse Jetty 插件通常会简化配置,允许用户一键启动和停止 Jetty 服务器,并且可以自动重新加载代码更改,提高开发效率。 Jetty 1.3.3 版本可能包含以下关键组件和特性: 1. **Servlet 支持**:Jetty 实现了...

    maven多模块项目+jetty热部署实例源码

    - 使用命令`mvn jetty:run`启动Jetty服务器,它会监听代码变化并自动重新加载修改。 2. **Jetty热部署配置** - 可以通过设置`scanIntervalSeconds`属性来控制扫描源代码的间隔时间,一旦检测到更改,就会自动重新...

Global site tag (gtag.js) - Google Analytics