jar not loaded和java.lang.NullPointerException错误

错误 1.validateJarFile(D:\apache-tomcat-6.0.35\webapps\ipv6\WEB-INF\lib\servlet-api.jar) - jar not loaded.

错误2.org.apache.jasper.JasperException: java.lang.NullPointerException
java.lang.NullPointerException
org.apache.jsp.index1_jsp._jspInit(index1_jsp.java:38)


在升级struts2到2.3.15.1过程中出现的两个问题,纠缠了大半天的时间。现将原因及解决办法记录下来。

以上俩个错误其实是由于一个原因引起的。即在web-inf下的lib中引入了servlet-api.jar和jsp-api.jar,在部署到tomcat中时和tomcat里的相同jar包产生冲突,因此报错。

在引入这两个jar包的时候,configuer build path -->AddLibrary-->User Library-->创建user libraries-->Add jars 将以上两个jar包加入到创建的user library中。

User Library的作用类似于jdk的作用,只在myeclipse里起作用,在tomcat里是不存在的。
### Java中处理 `ClassNotFoundException` 的方法 当遇到 `java.lang.ClassNotFoundException: org.primefaces.json.JSONObject` 时,这通常表明项目缺少必要的依赖项或配置不正确。以下是可能的原因以及解决方案: #### 原因分析 1. **缺失依赖库** 如果项目的构建工具(如 Maven 或 Gradle)未正确引入 PrimeFaces JSON 库,则运行时会抛出此异常[^1]。 2. **版本冲突** 不同版本的 PrimeFaces 可能使用不同的包名或类路径。如果使用的 PrimeFaces 版本较新而依赖的是旧版 JSON 类库,则可能导致此类错误[^2]。 3. **classpath 配置问题** 在某些情况下,即使已下载所需 JAR 文件,但如果它们未被正确添加到 classpath 中,也会引发该异常[^3]。 --- #### 解决方案 ##### 方法一:通过 Maven 添加依赖 对于基于 Maven 构建的项目,可以将以下依赖添加至 `pom.xml` 文件中: ```xml <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>8.0</version> <!-- 替换为实际所需的版本 --> </dependency> <!-- 显式声明 JSON 支持 --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.1.4</version> </dependency> ``` 注意:PrimeFaces 自带了一些基本功能支持,但在特定场景下仍需显式导入额外的 JSON 处理库[^4]。 --- ##### 方法二:手动添加 JAR 文件 如果不使用构建管理工具,可以直接从中央仓库或其他可信源获取对应的 JAR 文件并将其放置于项目的 lib 目录下。随后,在 IDE 设置中确保这些文件已被加入到 build path 中[^5]。 - 下载地址示例:https://mvnrepository.com/artifact/org.primefaces/primefaces (根据需求选择合适的版本) --- ##### 方法三:验证 ClassLoader 加载顺序 有时尽管存在正确的依赖关系,但由于加载器优先级设置不当也可能导致失败。可以通过调试确认当前线程上下文中可用资源列表是否包含目标类定义[^6]: ```java ClassLoader cl = Thread.currentThread().getContextClassLoader(); try { Class<?> clazz = cl.loadClass("org.primefaces.json.JSONObject"); System.out.println(clazz.getName() + " loaded successfully."); } catch (ClassNotFoundException e) { System.err.println(e.getMessage()); } ``` --- ##### 方法四:升级 PrimeFaces 至最新稳定版本 随着框架迭代更新,部分早期实现细节可能会有所调整甚至废弃重写。因此建议定期审查所用组件状态,并适时迁移到更现代的选择上来减少潜在兼容隐患[^7]. --- ### 总结 针对 `java.lang.ClassNotFoundException: org.primefaces.json.JSONObject` 错误,应重点排查是否存在遗漏必要模块的情况;同时也要留意不同发行版间存在的差异性影响因素。按照前述指导逐一尝试即可有效定位根本原因进而妥善修复之。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值