明明引入jar包,却依然ClassNOtFoundException

2024-04-15 19:08

本文主要是介绍明明引入jar包,却依然ClassNOtFoundException,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      用myeclipse和eclipse开发javaweb项目,常常会遇到一个奇怪的现象,明明我都引用了项目依赖的jar包,为何还会报错Java.lang.ClassNotFoundException,不是这个类找不到就是哪个找不到,最后找的都想骂街。。。。

为什么会出现这个诡异的问题呢,这就涉及到java build path引依赖包跟WEB-INFO/lib的区别:
1.build path&WEB-INFO/lib介绍
build path:可以说是引用;
WEB-INFO/lib:可以说是固定在一个地方;
eclipse编译项目的时候是根据build path的,如果不用eclipse来发布项目的话,就会出现找不到jar,tomcat运行项目首先是在它自己的公共lib里找jar,如果找不到的话就会去项目的WEB-INFO/lib目录找,如果找不到就报错。
build path引用的jar可以引用lib下的jar,也可以引用硬盘上任何可以访问位置上的jar,但是,我推荐把需要的jar都放到lib下,这样一旦发生jar包冲突、缺失的问题,我们可以直接到lib下查看,如果放到其它位置,检查起来则相对麻烦。

放到lib下也是一个好习惯,引用其它位置的jar【通常某些同学喜欢用myeclipse自动添加对struts、spring、hibernate的支持】,使用这种方式,很容易造成jar包冲突、缺失的问题,尤其是团队协作的情况下,如果你引用了本地硬盘上的某个jar,提交了.classpath文件到svn,别人检出后,就会报错,因为他的硬盘上的同一位置没有这个jar,而如果你放到lib下,再提交,检出后他的lib下是有这个jar的,因为lib是工程的一部分。
2.解决
你得首先确定你的是编译环境报错,还是程序报错。
因为程序中只认识web-inf/lib中的包。但是编译环境不是,如果编译环境在配置中说在某个地方有它要的包,那么如果那个地方没有,也会提示警告信息。
如果要在程序中正常运行,那么不管来自那里,最后包都是放在web-inf/lib中的。
所以此时你需要手动将需要的jar放到web-inf/lib下,然后clean一下项目,重新发布一下,就OK了。


这篇关于明明引入jar包,却依然ClassNOtFoundException的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906665

相关文章

JS在页面中的引入方式

注意 JS引入时的一个小问题: JS引入的是JS文件时,此标签之间的无效,既想插入文件又想嵌入写法,则必须另起一个标签。 重定向 action是指定提交到哪里

「Debug R」明明我用的是数据框,为啥运行结果有点不对劲

在「Debug R」有些你认为的报错不是报错(error),是警告(warnnings)里,我解决了一个使用者在 tibble 数据结构赋予行名出现的问题。 这次问题和上次类似,也是没有注意到自己用的数据结构其实不是普通的数据框了,只不过这次的问题的主角是 data.table。 果子老师很喜欢用data.table的一个函数---fread, 它的读取速度非常快,而且使用非常方便,基本不怎么

PHP的最新版本是什么?它引入了哪些新特性?

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言,主要用于服务器端编程。它在服务器上执行,能够生成动态页面内容、处理表单数据、发送和接收Cookies、操作数据库等。PHP语法借鉴了C语言,并吸纳了Java和Perl的特色,发展出自己的独特语法。 此外,PHP也是一种弱类型语言,从PHP 7开始增加了类型提示功能,使得代码更

SpringBoot-注解@ImportResource引入自定义spring的配置xml文件和配置类

1、注解@ImportResource 我们知道Spring的配置文件是可以有很多个的,我们在web.xml中如下配置就可以引入它们: SprongBoot默认已经给我们配置好了Spring,它的内部相当于已经有一个配置文件,那么我们想要添加新的配置文件怎么办? 注解@ImportResource就在干这个的: ① 创建一个新的spring配置文件 ② 程序口入,主类上加注解

Spring Boot 打成的 jar 和普通的 jar

Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过 java -jar xxx.jar 命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。 Spring Boot 的 jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spri

明明导入button 包 还是报错 的解决方法~

Multiple markers at this line - Buttom cannot be resolved to   a type  - Buttom cannot be resolved 1.   import android.widget.Button;               先删掉Button -- > 手写输入  --> 有别的类也要导入imp

maven常用命令以及jar依赖冲突

1 命令 1.1 常用命令 mvn validate 验证项目是否正确 mvn package maven打包 mvn generate-sources 生成源代码 mvn compile 编译 mvn test-compile 编译测试代码 mvn test 运行测试 mvn verify 运行检查 mvn clean 清理项目 mvn install 安装项目到本地仓库 mvn deplo

【报错解决】引入@ComponentScan注解注册bean容器后,导致的接口404问题

引入@ComponentScan注解注册bean容器后,导致的接口404问题 背景 由于微服务开发中,经常需要在公共模块在引入一些公共模块,供其他服务使用,但是其他服务需要在启动类中配置@ComponentScan注解扫描这个公共模块下注册的 bean,但是,如果我们配置了@ComponentScan并且扫描了公共模块下的 bean,那么将会破坏@ComponentScan默认扫描的包,也就是

Java如何生成jar包以及jar包加密

文章目录 1 生成jar包1.1 准备代码1.2 准备文件1.3 生成jar文件1.3.1 不包含MANIFEST.MF生成1.3.1.1 生成jar包1.3.1.2 修改MANIFEST.MF文件 1.3.2 直接指定MANIFEST.MF 1.4 运行hello.jar文件 2 jar包加密2.1 前言2.2 项目操作2.3 启动方式2.4 反编译效果2.5 绑定机器启动 以前

android倒计时封装(活动进入后台,倒计时依然能正常计时)

public class TimeUtils { /倒计时时长 单位:秒/ public static int COUNT = 20*60; /当前做/ private static int CURR_COUNT = 0; /预计结束的时间/ private static long TIME_END = 0; /计时器/ private static Timer countdown