错误日志存储在 你的workspace名称.metadata.log文件夹下。
tomcat运行maven项目Caused by: java.lang.ClassNotFoundException:
通过分析异常日志Caused by: Java.lang.NoClassDefFoundError: 此类异常的原因,一是没有编译、二是缺少jar。
解决办法:
问题原因已经定位到,解决办法就so easy了;解决办法就是需要的lib及jar拷贝到wtpwebapps\java-sm\WEB-INF文件夹下,此种方式有效,但是麻烦;下面通过配置实现自动发布。
右击项目->Properties->Deployment Assembly->add->Java Build Path Entries - >Maven Dependencies Finsh即可。
maven dependency中存在jar包,但是项目运行时加载不到,没有部署路径,通过上述方法解决。查看这些jar包是否发布到tomcat服务器:
通过ecplise部署项目后会在tomcat的目录下与webapps(MyEclipse下生成文件夹)同级生成一个wtpwebapps和backup文件夹,wtpwebapps就是用于存放部署项目的文件夹。
在路径下查看部署到tomcat的jar包,终端进入文件夹下查看:
:~/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/jrosbridge/WEB-INF/lib```
workspace是eclipse的工作路径,jrosbridge是部署到tomcat上的项目名称。
*******
####javax.util.ServiceconfigurationError:
**javax.util.ServiceconfigurationError:javax.websocket.ContaionProvider: Provider org.apache.tomcat.websocket.WsContaionProvider not a subtype**
解决找不到类部署问题后出现以下配置错误,只有google了才找到了跟我一样的错误。
![配置错误.png](http://upload-images.jianshu.io/upload_images/3869738-2a606bfc1488002b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
问题猜测是因为tomcat部署的jar包跟依赖中用到的包冲突( *websocket* )。
问题描述:The issue is that my pom.xml file presented a dependency that was in conflict with a couple of .jar files that I had added to my library.
[类似链接问题1](http://stackoverflow.com/questions/26643691/java-util-serviceconfigurationerror-javax-xml-parsers-saxparserfactory-provide)
**问题尝试解决办法一:**
1. 在tomcat8.0上使用websocket
2. 在项目pom文件中添加:
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>```
因为有了scope标签,所以编译时部署,运行时不部署。
描述:上述修改并没有解决问题,还是报相同错误。原因是在tomcat8上使用websocket协议不支持造成,但是网上搜索都说8完全支持websocket,也不需要添加依赖包。现在还不知道是否是我的eclipse不知道tomcat8造成websocket出错。
问题尝试解决办法一:
重写安装了tomcat7,然后在项目的pom文件中添加上述两个包的依赖,成功链接!错误解决。
上述问题花费我四天以上的时间解决。
转:java项目中Classpath路径指的是什么?
原文地址:http://blog.csdn.net/javaloveiphone/article/details/51994268
- src不是classpath, WEB-INF/classes,lib才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。
- WEB-INF/classes目录存放src目录Java文件编译之后的class文件,xml、properties等资源配置文件,这是一个定位资源的入口。
- lib和classes同属classpath,两者的访问优先级为: lib>classes。
- 引用classpath路径下的文件,只需在文件名前加classpath:
<param-value>classpath:applicationContext-*.xml</param-value>
<!-- 引用其子目录下的文件,如 -->
<param-value>classpath:context/conf/controller.xml</param-value>```
5. classpath 和 classpath\*区别:
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
####eclipse中图标含义:
![json图标含义](http://upload-images.jianshu.io/upload_images/3869738-c839a4029d4e0edc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
jar包瓶子上多了一个类似文章的一个标记,代表引用的source文件来自本地库,右击>properties中可以做修改。