无法访问OSGi中的javamail中的类
我有一个OSGi包,我使用java邮件API来添加邮件功能。
我面临的问题是,bundle类加载器不会为加载本地或全局类时创建的classpath变量中的mail-1.4.jar和activation.jar添加条目。
我在清单中的bundle classpath中添加了mail-1.4.jar和activation.jar,这些jar是简单的jar(不是OSGi包)。 这些都在我的包中的lib目录中。 现在在加载javax.mail.Address类时抛出ClassNotFoundException。 这是当我使用命令行运行我的应用程序时。
当我在Eclipse中运行它时它工作得很好。 我用equinox作为我的容器。 有什么建议么?
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
你使用bundle类路径是不寻常的。 您应该使用Import-Package(最佳实践)或Require-Bundle进行依赖关系。 Bundle类路径是说所有这些jar都打包在bundle文件夹中的lib文件夹中。 我怀疑事实并非如此,即使是这样,你会完全绕过Eclipse给你的所有模块化。
尝试将'javax.mail'包添加到Import-Package标题中。 有关Eclipse中不需要此解释的原因,请参阅i / Why_does_Eclipse_find_javax.swing_but_not_Felix%3F。
链接地址: http://www.djcxy.com/p/74719.html