微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Heroku 中使用外部库运行 Java/Maven 应用程序?

如何解决如何在 Heroku 中使用外部库运行 Java/Maven 应用程序?

我一直在构建一个 Java 应用程序,它在本地执行时按预期运行。现在我正在尝试下一步,将其移至外部平台。我选择 Heroku 是因为他们的入门计划是免费的,还因为它让我拥有一个小型 PostGresql 数据库,我可以将它与应用程序一起使用。

由于 Heroku 的工作方式,我被迫将 Java 与 Maven 集成,而我对此知之甚少。但在我能够编译和部署应用程序(源代码在 GitHub 中)之前,我仍然能够按照自己的方式工作,尽管有错误

有一次,我使用了几个外部库:

  • jsoup-1.13.1.jar – Jsoup,用于更轻松地解析 HTML 文件
  • mail.jar – Java 邮件,用于通过电子邮件发送报告

每当在 Heroku 中部署应用程序时,线程“main”java.lang.NoClassDefFoundError: org/jsoup/Jsoup 中都会出现异常,最终由 Jsoup.connect 调用触发。据我了解,Maven 只添加了对程序的引用,但不包括运行时的实际库,我认为这可能是问题的原因。

我尝试通过手动添加这些依赖项来修改我的 pom.xml 文件

<dependencies>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.18</version>
    </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.13.1</version>
    </dependency>
</dependencies>

以及构建部分中的这些插件

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>checker</finalName>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我做错了什么?我将非常感谢帮助我运行应用程序的提示,至少可以解决 Jsoup 在 Heroku 中根本无法运行的原因。提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。