首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在OSGi中访问javamail中的类

问无法在OSGi中访问javamail中的类
EN

Stack Overflow用户
提问于 2012-09-06 22:06:34
回答 2查看 1.1K关注 0票数 0

我有一个OSGi包,我正在使用java mail api在其中添加邮件功能。

我面临的问题是,绑定包类加载器没有在类路径变量中添加mail-1.4.jar和activation.jar的条目,类路径变量是在加载本地或全局类时创建的。

我已经在manifest中的捆绑包类路径中添加了OSGi -1.4.jar和activation.jar,这些jar是简单的jar(不是mail捆绑包)。它们位于我捆绑包中的lib目录中。现在,在加载javax.mail.Address类时抛出了ClassNotFoundException。这是当我使用命令行运行我的应用程序时。

当我在Eclipse中运行它时,它工作得非常好。我使用equinox作为我的容器。有什么建议吗?

代码语言:javascript
复制
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Workexp
Bundle-SymbolicName: com.gslab.workexp
Bundle-Version: 1.0.0
Bundle-Activator: com.gslab.workexp.Activator
Bundle-Vendor: GSLAB
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework
Bundle-ClassPath: .,
 lib/mysql-connector-java-5.1.20-bin.jar,
 lib/commons-beanutils-1.8.0.jar,
 lib/commons-collections-2.1.1.jar,
 lib/commons-digester-2.1.jar,
 lib/commons-javaflow-20060411.jar,
 lib/commons-logging-1.1.1.jar,
 lib/iText-2.1.7.jar,
 lib/jasperreports-4.6.0.jar,
 lib/jdt-compiler-3.1.1.jar,
 lib/log4j-1.2.9.jar,
 lib/mail-1.4.jar,
 lib/activation.jar
EN

回答 2

Stack Overflow用户

发布于 2012-09-07 22:37:50

您使用捆绑包类路径是不寻常的。对于依赖项,您应该使用Import-Package (最佳实践)或Require Bundle。Bundle classpath表示,所有这些jar都打包在您的bundle归档文件中的lib文件夹中。我怀疑情况并非如此,即使是这样,您也会完全绕过Eclipse提供给您的所有模块化。

尝试将'javax.mail‘包添加到您的Import-Package头中。有关在Eclipse中为什么不需要此功能的解释,请参阅i/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F.

票数 0
EN

Stack Overflow用户

发布于 2018-11-14 17:50:18

确保您的lib文件夹包含在bin.includes中( Manifest编辑器中的Build选项卡),否则它们不会被导出到最终的jar中。这是一个非常恼人的'bug‘,它在eclipse中工作(因为文件可以在文件系统中访问),但是构建器将忽略不包含的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12301959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档