2013-01-08 59 views
4

我有用于发送邮件的OSGi包,所以它使用com.sun.smtp包从mail-1.4.jar。但OSGi服务无法访问此jar。Maven - 包含引用库中的罐子

你能帮我吗,如何配置Maven POM文件如此mail-1.4.jar将被包含在我的bundle jar中,所以OSGi服务可以使用它吗?

EDIT

错误是:
javax.mail.NoSuchProviderException:无法找到用于协议提供者:SMTP

+0

将依赖关系添加到maven pom中将不起作用,您还需要在运行时提供该依赖关系。您是否部署了提供必要软件包的软件包? – benjamin

回答

2

我会建议不要在你的包中包含邮件jar。更好的方法是简单地将mail.jar安装在osgi运行时。

你必须确保你拥有两个东西,使这项工作:

  1. 确保导入所需的包在自己包的清单。通常简单地使用默认的maven bundle插件可以做到这一点,但是你应该检查得到的Manifest
  2. 将mail.jar部署到你的OSGi运行时。如果您使用的是Apache karaf,那么只需执行以下命令: mvn install -s mvn:javax.mail/mail/1.4.4如果没有,那么下面的jar应该会有所帮助。它包含一个用于OSGi部署的正确Manifest文件http://search.maven.org/#artifactdetails|javax.mail|mail|1.4.4|jar
2

Yeasterday,我面对相同/类似的情况。尝试以下操作:

下面的行添加到您的依赖列表:

<dependency> 
<groupId>javax.mail</groupId> 
<artifactId>mail</artifactId> 
<version>1.4.1</version> 
</dependency> 

希望它确实有助于

+0

事实上,它没有 - 我仍然有* javax.mail.NoSuchProviderException:在运行OSGi服务时无法找到提供程序协议:smtp *异常。事实上,我在使用Eclipse下的捆绑软件作为Java应用程序时,在* Referenced Libraries *中使用* mail-1.4.jar *时没有问题。 –

+0

如果您已将您的软件包部署到您的网络服务器中,您确定可以访问目标邮件服务器吗?也许你还必须配置你的应用服务器。 – reporter

+0

是的,我已经尝试从同一台机器上的Eclipse应用程序(工作)和OSGi服务(不工作)。 –

3

试图通过将此代码添加到您的pom.xml

<dependency> 

    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4</version> 

</dependency> 

或者

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-email</artifactId> 
    <version>1.2</version> 
</dependency> 

这可能会帮助你!