【问题标题】:Maven - include referenced library in jarMaven - 在 jar 中包含引用的库
【发布时间】:2012-12-22 06:35:49
【问题描述】:

我有用于发送邮件的 OSGi 包,所以它使用 mail-1.4.jar 中的 com.sun.smtp 包。但是 OSGi 服务无权访问这个 jar。

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

编辑

错误是:
javax.mail.NoSuchProviderException:无法找到协议的提供者:smtp

【问题讨论】:

  • 仅将依赖项添加到 maven pom 是行不通的,您还需要在运行时提供该依赖项。您是否部署了提供必要软件包的捆绑包?

标签: java maven-2 jar osgi


【解决方案1】:

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

你必须确保你有两件事来完成这项工作:

  1. 确保在您自己的捆绑包的清单中导入所需的包。通常只需使用带有默认值的 Maven 捆绑插件即可,但您应该检查生成的清单
  2. 将 mail.jar 部署到您的 OSGi 运行时。如果您使用的是 apache karaf,那么只需执行以下操作: mvn install -s mvn:javax.mail/mail/1.4.4 如果没有,那么下面的 jar 应该会有所帮助。它包含用于 OSGi 部署的正确清单文件 http://search.maven.org/#artifactdetails|javax.mail|mail|1.4.4|jar

【讨论】:

    【解决方案2】:

    昨天,我遇到了同样/相似的情况。请尝试以下操作:

    将以下行添加到您的依赖项列表中:

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

    希望对你有帮助

    【讨论】:

    • 事实上它没有 - 我仍然有 javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp 运行 OSGi 服务时出现异常。事实上,在 Eclipse 下使用 bundle 作为 Referenced Libraries 中的 mail-1.4.jar 的 java 应用程序时,我没有问题。
    • 如果您已将捆绑包部署到您的网络服务器中,您确定可以访问您的目标邮件服务器吗?也许您还必须配置您的应用程序服务器。
    • 是的,我已经尝试在同一台机器上使用 Eclipse 应用程序(工作)和 OSGi 服务(不工作)。
    • 你能提供一些来自你的 osgi 包的源代码吗?也许我们可以更深入地了解您的捆绑包。
    • 对不起,我想我不能。我只需要使用 Maven 打包一些依赖项来捆绑 jar,但我是 Maven 的初学者。
    【解决方案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>
    

    这可能对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2012-09-28
      • 2018-10-04
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多