ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer

时间:2016-09-08 01:31:14

标签: java eclipse tomcat servlets glassfish

我几个月前下载了Eclipse Luna和Tomcat 8.0.24,但我开始使用它。我一直在创建一个没有Maven的网络应用程序。我手动下载了Jersey 2.23,Jersey media moxy 2.23,java-son 1.0,jdbc mysql 5.x和sql2o 1.5.4。我开始学习Angular并且我成功地创建了一个页面而没有任何问题。

我记得我在项目的构建路径中手动添加了我的jar,我也被迫在部署程序集中添加它们。细

自从2周以来,我没有关闭笔记本电脑,只是处于睡眠模式。但昨天我确实关机了。从那时起,我一直在努力让它再次发挥作用。我使用postman chrome来测试我的restful服务,并在关闭404错误后收到了。

我意识到我开始在控制台中看到异常:

  

java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer

我删除了tomcat和eclipse的文件夹,从头开始拼命地重新开始。但是,我遇到了同样的问题。我记得我玩的最后一件事是这些修改过的选项。

  1. 从服务器标签中双击服务器
  2. 从使用工作区元数据更改为使用Tomcat安装
  3. 服务器中的属性
  4. 将位置从元数据切换到localhost.server
  5. 感谢这些问题,我解决了我的问题:

    现在,在"重新安装" eclipse和tomcat,当我在库选项卡中添加jar时,它们现在会自动添加到部署程序集中。 (惊讶)

    根据前面提到的问题,我在我的工作区中添加了WEB-INF / lib中的所有jar,也在tomcat / wtpwebapps / myproject / WEB-INF / lib中添加了。如果我不这样做,我就无法让它发挥作用。邮差终于给了我想要的输出。

    尽管如此,我意识到当我通过Windows资源管理器手动复制jar时,Eclipse中的控制台会再次显示tomcat重启。但我仍然看到异常: java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer 。至少我可以在浏览器或邮递员中运行我的项目而没有任何问题。很奇怪。

    我想在Windows中添加新的用户库>偏好> Java>构建路径>用户库,但我的列表是空的!所以...

    最后,我的问题:

    • Eclipse正在发生什么?
    • 为什么我无法看到之前添加的用户库? enter image description here
    • 为什么我仍然在控制台中看到glassfish.jersey的例外情况,如果我在web-inf文件夹中添加了jar,这使得它显然可以正常工作。
    • 为什么我需要在web-inf中添加jar,如果我看到Tomcat库中包含的所有jar都是我的所有jars,因为我忘了提到我在我的Tomcat的lib中添加了一个名为External的文件夹文件夹中。

    enter image description here

    enter image description here

    对于所有这些更改,我重新启动了Eclipse

1 个答案:

答案 0 :(得分:0)

不要手动添加jar,而是使用maven并让maven管理jar的依赖。 如果在类路径中没有jar,则会发生ClassNotFoundException。也许你在服务器上部署的软件包没有正确捆绑。确保您的包中捆绑了jar或存在于类路径中。

另一个原因可能是您在两个罐子中有重复的类文件,而您的程序选择的类不适合。