【问题标题】:How to include .jar library, that is inside java project and make application use this library that is inside application after compilation?如何在java项目中包含.jar库并使应用程序在编译后使用应用程序内部的这个库?
【发布时间】:2018-04-07 17:40:28
【问题描述】:

我知道这个问题对你来说可能很容易,但我确实遇到了问题。

例如,当我将 apache commons-lang jar 库放入与 src 文件夹处于同一级别的项目文件夹 lib 中并将此 jar 库添加到项目的构建补丁中时,eclipse 编译所有内容都没有错误,并将所有源放入导出的 .jar 文件(包括 lib 文件夹和内容)。

但是,当我启动应用程序时,我收到此错误:

23:55:42 [SEVERE] Exception in thread "main" 23:55:42 [SEVERE] java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

谁能解释一下为什么 JVM 看不到我在 lib 文件夹中的库以及在项目的构建补丁中定义的库?

我必须做什么才能让我编译的应用程序看到这个 jar 文件?

【问题讨论】:

  • 使用java 命令启动应用程序jar 时,可以使用-cp 选项指定运行时类路径。
  • 感谢您的回复,但是是否可以让应用程序自动使用 lib 文件夹中的 jar,或者我必须创建简单的启动器来执行带有库位置的 java -cp?
  • 没有。但是,为了避免每次都输入命令行,您可以创建一个 shell/bat 脚本来启动您的应用程序。
  • 您是否检查了构建路径中名为“订购和导出”的另一个选项卡?如果您想将它包含在您的 .jar 中,则必须选择该库
  • jar 文件需要在 -cp 中明确列出,不像类文件可以通过包含它们所在的文件夹来添加 [链接] (docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html)

标签: java eclipse jar libraries


【解决方案1】:

您必须在启动脚本中明确提及类路径,除非您使用任何容器,如 tomcat,您可以将库和依赖项放在 lib 文件夹中。

您可以使用-cp 并提供库的路径,以便java 程序使用上述类路径中所需的所有库。

希望这会有所帮助!

问候, 埃比·J

【讨论】:

  • 如果我将创建 maven 项目而不是普通的 java 项目,并将这个 apache 公共库添加到 maven 设置中,它会修复这个错误吗?
  • 是的,您可以创建一个 Maven 项目并使用所有依赖项进行编译。 maven 这样做的目标是。 mvn clean compile assembly:single
  • 我在应用程序的 java 项目的构建路径中发现了一个名为“Order and Export”的东西。如果我将在此选项卡中检查 apache 库,它会在我的应用程序的已编译 jar 中找到常见的 apache 库吗?
猜你喜欢
  • 2011-08-29
  • 2020-11-18
  • 2012-09-12
  • 1970-01-01
  • 2017-07-10
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多