几个月前,我下载了Eclipse Luna和Tomcat 8.0.24,但是我开始使用它。我一直在创建没有Maven的Web应用程序。我手动下载了Jersey 2.23,Jersey媒体moxy 2.23,java-son 1.0,jdbc mysql 5.x和sql2o 1.5.4。我开始学习Angular,并且成功创建了一页,没有任何问题。
我记得在项目的“构建路径”中手动添加了我的jar,我也被迫将它们添加到“部署程序集”中。精细。
自2周以来,我没有关闭笔记本电脑,只是处于睡眠模式。但是昨天我确实关机了。从那时起,我遭受了重新使它工作的痛苦。我使用邮递员Chrome浏览器测试我的静态服务,并且在关闭404错误后收到了邮件。
我意识到我开始在控制台中看到异常:
java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer
我拼命删除了tomcat和eclipse文件夹,以重新开始。但是,我遇到了同样的问题。我记得我玩的最后一件事是这些修改的选项。
从服务器选项卡中双击服务器
从使用工作空间元数据更改为使用Tomcat安装
服务器中的属性
将位置从元数据切换到localhost.server
正是由于这些问题,我才解决了我的问题:
org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
现在,在“重新安装” eclipse和tomcat之后,当我在“库”选项卡中添加罐子时,它们现在会自动添加到部署程序集中。 (惊讶)
根据前面附带的问题,我从工作区中将所有jar添加到了WEB-INF / lib中,也将其添加到了tomcat / wtpwebapps / myproject / WEB-INF / lib中。如果我不这样做,我将无法使其正常运行。邮递员终于给了我想要的输出。
不过,我意识到,当我通过Windows资源管理器手动复制jar时,Eclipse中的控制台显示了重新启动的tomcat。但是我仍然看到异常:java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer。至少我可以在浏览器或邮递员中运行我的项目,而没有任何问题。很奇怪。
我想在Windows>首选项> Java>构建路径>用户库中添加一个新的用户库,但是我的列表是EMPTY!所以...
最后,我的问题:
Eclipse是怎么回事?
为什么我看不到以前添加的用户库?
如果我在web-inf文件夹中添加了jars,那么为什么在控制台中仍然可以看到glassfish.jersey的例外情况,因此显然可以正常工作。
为什么我需要在web-inf中添加jar,如果当我看到Tomcat库中包含的所有jar时,所有的jar都在那里,因为我忘了提到我在Tomcat文件夹的lib中添加了一个名为External的文件夹。
对于所有这些更改,我重新启动了Eclipse
最佳答案
代替手动添加jar,使用maven并让maven管理jar的依赖关系。
当您在类路径中没有jar时,将发生ClassNotFoundException。也许您在服务器上部署的软件包未正确捆绑。确保已将jar捆绑在包中或存在于类路径中。
另一个原因可能是您在两个jar中有重复的类文件,并且您的程序选择的类不合适。