javaweb访问hdfs的一些错误
javaweb 与 HDFS 坑
前提:javaweb 项目,hdfs中的数据文件,导入访问hdfs的jar包,eclipse调试
问题:在×××.java代码中正常访问hdfs,浏览jsp时调用×××.java程序,报java.lang.NoClassDefFoundError: org/apache/hadoop/fs/Path。
误区: java.lang.NoClassDefFoundError && java.lang.ClassNotFoundException
分析:
java.lang.ClassNotFoundException
1 .jar 包没导 - 已导入!
2. jar包导入位置问题: 在web-inf/lib 下添加 jar包 - 就是在此加的jar包!
3. 部署的项目文件中没有这个类包 ??
通过eclipse运行:eclipse没有将lib下的jar包部署到文件的tomcat的web-inf/lib下,tomcat检查时找不到jar
NoClassDefFoundError 错误产生的原因是:
4. JVM在编译的时候能找到调用方法或静态变量所在的类,但在运行的时候找不到此类而引发的错误。
5. 没有将jar添加到classpath ??
解决:
3 -> 参考 - https://www.cnblogs.com/xiangkejin/p/8798859.html
5 -> 在java build path里的order and export里把要编译的包文件前打勾
认识:order就是使用class的顺序(因为可能出现class同名的情况)
export就是把用到的一些的lib和project同时发布.
有效:重建项目,重新导包
解释:查看web项目下有没有web app libraries - 这个类库有关web
总结:
web deployment assembly - 发布
* . DeployPath表示每个资源发布之后的文件路径
build path - 编译
的几个选型卡Source、Projects、Libraries、Order and Export
1. 设置 .java .class 的存放路径(java,javaweb项目中位置不同)
2. 关联其他项目 ( 调用其他项目工程,使用其中一些东西)
3. 关联类库( libraries 添加jar包到项目中)
4. Order and Export有两个属性,调用优先级的问题,越在上边调用优先级越高
待续:
eclipse中的启动web项目过程............