这是我第一次尝试制作一个包含 servlet 的 osgi 包。在谷歌上搜索后,我制作了这个包,它被 glassfish 4 成功启动。但是当我在浏览器中尝试打开它时,我得到了
java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet not found by ... [299] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)
我的 list 文件:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: tutu
Bundle-Version: 1.0.0
Bundle-ClassPath: WEB-INF/classes
Web-ContextPath: /tutu
Import-Package: javax.servlet,javax.servlet.annotation, javax.servlet.http
据我了解,osgi 不会导入这些包,尽管我可能是错的。请帮助解决这个问题。
编辑: 我发现了错误。 MANIFEST 中的顺序是有意义的。所以最终的 list :
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: tutu
Bundle-Name: tutut
Bundle-Version: 1.0.0
Import-Package: javax.servlet,javax.servlet.annotation, javax.servlet.http
Bundle-ClassPath: WEB-INF/classes
Web-ContextPath: /tutu
最佳答案
在构建路径中添加 servlet-api.jar 并尝试。
关于java - GF4 javax.servlet.http.HttpServlet 的 OSGI bundle - ClassNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803661/