今天碰到问题了。
在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>
<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>
...
<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>
...
但是,照做不行,报错了,请看错误
- java.lang.ClassNotFoundException: org.mortbay.jetty.servlet.DefaultServlet
- at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
- at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
- at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:381)
很蛋疼吧,没有找到类,那么这个类是什么,仔细观察,是叫jetty包下的。
但是我们用的版本是什么呢 7.6
请注意了,这个时候的jetty 已经投入到eclipse的怀抱中了。哈哈
所以当然在公司内部使用groupId和ArtifactId也发生了变化肯定就变了啊
修改webdefault.xml文件
- <servlet>
- <servlet-name>default</servlet-name>
- <!-- <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> -->
- <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
- <init-param>
- <param-name>useFileMappedBuffer</param-name>
- <param-value>false</param-value>
- </init-param>
- <load-on-startup>0</load-on-startup>
- </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; }
相关推荐
jetty启动配置文件
JETTY启动文件配置方法.txt
jetty容器内嵌到java代码中,通过代码控制启动,方便开发调试
jetty启动的maven web项目
jetty简单启动web服务
使用Eclipse构建Maven的Web项目用jetty启动.docx
启动jetty的start.jar,此文件所在目录下增加lib,etc,context文件夹,lib下增加jetty的主jar包和jetty的util包。在etc下增加jetty的两个配置文件jetty.xml和webdefault.xml。在context下增加test.xml
给出一个JETTY启动的例子,适合新手学习!
自己写的jetty6在eclipse启动中配置说明
org.apache.jasper.JasperException: /WEB-INF/tags/ext/body.tag(105,4) PWC6038: "${empty(extLocation)?"js/ext-2.0":extLocation}" contiene expresiones no válidas: javax.el.ELException: Error Parsing: ...
jetty的main启动代码及相关jar包: jetty-6.1.26.jar、jetty-util-6.1.26.jar为jetty相关jar包。 jasper-el.jar、jasper-jdt.jar、jasper.jar为jsp页面解析编译相关jar包。 jsp-api.jar为jstl相关jar包 tomcat-juli....
NULL 博文链接:https://vista-rui.iteye.com/blog/1386427
jetty修改js不用重启项目的方法,你还在愁每次修改js后,都需要重启jetty吗?看完此文档,再也不用愁了,里面有图有真相,动手操作,让你受益匪浅
将此类放入项目中,稍作修改,便可启动jetty部署。
jetty的xml文件配置说明
jetty start 9.2.13 项目所需要的完整jar包,免费。jetty启动调试
shell脚本启动jetty嵌入式server,shell脚本启动jetty嵌入式server
eclipse jetty插件安装文件
jetty简单启动web服务第二版,运行多个servlet
jetty是什么 jetty配置 jetty使用 jetty嵌入 jetty启动 jetty部署 jetty教程 jetty嵌入式 jetty