1

我正在使用带有嵌入式 tomcat 的 eclipse virgo 服务器。我想使用我创建的自定义会话管理器,它存在于 osgi 包中。我已经将 osgi 包配置为一个片段,而 catalina 包是片段主机。同样在我的 context.xml 中,我通过指定完全限定的类名来配置会话管理器。

问题是在启动时我的会话管理器会出现 ClassNotFoundException。

我尝试将我的 jar 添加到 lib 文件夹并修改 config.ini 以使我的 jar 在启动时加载,但这并没有帮助

在这种情况下,我应该怎么做才能确保在启动时找到我的课程。

4

2 回答 2

2

您可以使用本博客中描述的Virgo Shell 命令来分析类加载问题。例如,您可以列出所有可以加载类的包。查看 Virgo 常见问题解答 如果需要,如何将导入添加到 3rd 方捆绑包。

于 2014-01-20T08:55:27.943 回答
1

启用类加载器调试有帮助,

在 configuration/config.ini 添加以下属性

osgi.debug=configuration/equinox-debug.properties

在 configuration/equinox-debug.properties 添加以下属性,

org.eclipse.osgi/debug=true
org.eclipse.osgi/debug/loader=true

现在,当您重新启动容器时,它会打印出试图加载您的类的 BundleClassLoader。我希望将我的包作为片段添加到正在加载此类的包中,因此一旦我弄清楚哪个包正在加载该类,我只需将其用作片段主机。

于 2014-01-22T02:00:28.020 回答