最近做一个项目,里边要用到javawebservice,最终决定采用Rest 架构风格的web 服务。由于本人对java 这一套工具不是很熟悉。以前只写过控制台的helloword,然后,就直接到 rest 框架选择 + web .中间的曲折让我d疼不已。
既然今天的题目是tomact的版本,我就先把中间的曲折放一放,等些rest 的时候再说
做rest的一个入门示例的时候,我在eclipse上部署了tomact7.0 用的eclipse是helios的。然后,建立 动态web项目,在网上找到 rest的入门代码之后,开始运行,就爆出
Error configuring application listener of class org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
2011-9-9 0:54:17 org.apache.catalina.core.StandardContext listenerStart
如此错误,无语啊。然后就开始痛苦的寻找解答过程。最初以为是没有类,因为eclipse用的少,以为是自己包的引用有问题,搞半天,不行。然后就找什么原因会导致 ClassNotFound,当然,我已经很确定的查过了,在引入的包是有该类的。在网上翻与classnotfound相关的东西。有的说 包冲突会引起这个问题,挨个jar查看,果然有包重复,网上说删掉ok。结果,我这不行。找啊找啊,试了N中办法。他nainai的还不行。我这个人属于那种遇到一个问题,不解决不爽的人。结果这个问题搞了几天!!都没搞定。当然中间还有其他事做。崩溃啊。在stackflow上也有一个小伙子遇到同样的问题,结果 回答的人的英语答案,我理解的不好,反正没成功。我真的几欲崩溃 了。。
最终我开始怀疑是不是我的环境的问题。因为我是 win7 64位的。eclipse版本相对高一点。当时压根没想到tomact7.0 的事。然后就在同学那试。
同学的环境是 32 系统,myeclipse.拷过去之后,运行之后成功了。我d疼啊,想必大家理解不了当时一个解决了n天都没有解决的问题的人发现在别人机器上完好运行的 人的心情。。。在myeclipse能成功,为啥在我这不行!
难道真的是64位同32的问题??
这个不好说啊,总不能让我换系统吧
还有就是tomact配置问题了,因为我不敢确定我的tomact配置没有问题,因为对它实在不熟。然后就在网上狂翻 tomact配置。不行啊,卸载windows 安装版的,换成免安装的,32换 64的,找配置,乱七八糟。大爷的还不行。版本?可能是版本,我就下6.0的,其实每次当你卸载的toamct之后,又创建新的tomactru 服务器的时候,很有可能会出现Cannot create a server using the selected type的错误,在网上找到
还有另一种方式:
在当前工作区中如下路径:/.metadata/.plugins/org.eclipse.core.runtime/.settings,记住不是eclispe程序的路径。
把其下org.eclipse.wst.server.core.prefs和 org.eclipse.jst.server.tomcat.core.prefs这两个文件去掉
后重启eclipse即可。
好吧,感谢。这个可以用。当然,你需要重新配置你的tomact路径。
然后,换成6.0其实还有问题,我的web 选择版本为3.0 哎太新了,不行啊。结果创建 6.0server时就出错。
Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v5.5"/>
<fixed facet="jst.web"/>
<fixed facet="jst.java"/>
<installed facet="jst.java" version="5.0"/>
<installed facet="jst.web" version="2.4"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
》
像我这样的错误,可以下载Tomcat 7。0解决,不过我闲麻烦,干脆就在配置文件中把<installed facet="jst.web" version="3.0"/> 改成低些的版本version="2.5" 就好了
我去啊,终于成功了。太难得了。
意识到tomact版本之前,我一直纠结于我的凭什么不行。想的我头大头疼,一直爆粗口。哎,程序员遇到自己搞不定的错误很纠结啊,不爆两句怎么缓解压力啊。。
过一短时间,把这个rest的h入门程序贴上来。分析一下。
ok。还要集成到gae里边。不知道还会遇到什么错。
哦,忘了说了,编译器不是万能的,也有可能是坑爹的.
啊,那会把我搞得快疯了。。。
以前做一个读取pdf文件也是版本问题。用pdfbox。有异常,在后边版本中解决的。我也是很悲剧的研究了好久。。。。
还有eclipse插件版本选择,还有一些列与版本相关的东西。。神那,快来配一个人把这理的更清楚一点。。。。。
10年九月十日,玩。速比疾书