我将我的战争部署为OSGi捆绑包,但不断收到此错误:
[#|2016-09-12T13:39:59.409+0200|WARNING|glassfish3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=39;_ThreadName=Thread-2;|DPL8004: file open failure; file = file:/C:/Users/me/AppData/Local/Temp/osgiapp2866222350344881589/WEB-INF/lib/Bundle295.jar|#]
我不知道为什么glassfish正在寻找那个Bundle295.jar
文件。它不在我的战争WEB-INF/lib
中。
另外,我注意到,如果我将类路径删除到el-api
和el-impl
,问题就会消失,但当然我会因为丢失而发现其他类别的def not found错误库。
换句话说,只有当我在我的WEB-INF/lib/el-api-2.2.jar
文件中添加两个jar WEB-INF/lib/el-impl-2.2.jar
和MANIFEST.MF
的类路径时才会出现问题:
Bundle-ClassPath: WEB-INF/classes,
WEB-INF/lib/el-api-2.2.jar,
WEB-INF/lib/el-impl-2.2.jar,
WEB-INF/lib/javax.servlet-api-3.1.0.jar,
WEB-INF/lib/javax.servlet.jsp-api-2.2.1.jar,
有人可以对此有所了解吗?
答案 0 :(得分:0)
GlassFish在应用生命周期的各个时间点在-Djava.io.tmpdir
中指定的位置创建临时文件。这看起来像是由Felix(OSGi容器)创建的用于缓存的临时目录。当服务器正常关闭时,这些临时文件将被清除,但如果服务器被终止或发生错误而终止JVM,则可能会挂起。
您应该能够删除..\osgiapp...
文件夹而不会产生任何副作用,并重新启动GlassFish以避免此问题。
服务器日志消息似乎只是WARNING
- 它实际上是否导致任何问题?如果没有,可以忽略它。