美文网首页
错误记录

错误记录

作者: 橙子潘潘 | 来源:发表于2017-04-08 21:17 被阅读0次

    错误日志存储在 你的workspace名称.metadata.log文件夹下。

    tomcat运行maven项目Caused by: java.lang.ClassNotFoundException:

    通过分析异常日志Caused by: Java.lang.NoClassDefFoundError: 此类异常的原因,一是没有编译、二是缺少jar。

    jsonError.png

    解决办法:
    问题原因已经定位到,解决办法就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](https://img.haomeiwen.com/i3869738/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

    1. src不是classpath, WEB-INF/classes,lib才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。
    1. WEB-INF/classes目录存放src目录Java文件编译之后的class文件,xml、properties等资源配置文件,这是一个定位资源的入口。
    2. lib和classes同属classpath,两者的访问优先级为: lib>classes。
    3. 引用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图标含义](https://img.haomeiwen.com/i3869738/c839a4029d4e0edc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    jar包瓶子上多了一个类似文章的一个标记,代表引用的source文件来自本地库,右击>properties中可以做修改。

    相关文章

      网友评论

          本文标题:错误记录

          本文链接:https://www.haomeiwen.com/subject/hvrlattx.html