【问题标题】:Where do you put the .jar file for an external library in java [closed]您在哪里将 .jar 文件放在 java 中的外部库 [关闭]
【发布时间】:2014-12-28 06:00:36
【问题描述】:

这可能是一个非常愚蠢的问题。我刚刚通过将 .jar 文件添加到类路径之类的东西中学习了如何在 java 中使用外部库,但是您将 .jar 文件保存在哪里呢?在有关将 .jar 文件添加到类路径的视频教程中,程序员只是将 .jar 文件保存在他的下载文件夹中。那么你可以把文件放在任何地方吗?或者是否有一个关于我应该遵守的保存库文件的一般范式?

【问题讨论】:

  • 通常 jar 文件被放入项目内的 lib 文件夹中
  • Where to put the external jars? 的可能重复项
  • 您可能还想对依赖管理器系统进行一些研究,例如 Maven
  • 一般来说,这将取决于您的需求。像 Maven 这样的依赖管理器将负责维护对您正在使用的库版本的正确引用。如果您没有依赖管理器,您将需要设计自己的控制库的方法,但一般来说,如果您可以避免它,您还应该避免将它们包含在您可能使用的任何源代码控制系统中。 .
  • 答案取决于。您是否自己构建了一个自定义项目,那么重要的是您可以以某种对您来说合乎逻辑的方式找到依赖项。您是否正在与多个开发人员一起构建项目?那么您需要一种其他开发人员可以管理依赖关系的方法,这种方法不会破坏其他用户的代码,但也很容易管理。根据用户是否在同一个网络上会提供不同的解决方案,例如自动依赖管理系统。更新之间的时间间隔也可能会影响您的选择。

标签: java jar paradigms


【解决方案1】:

最好使用像maven这样的依赖管理系统,但如果您对此有限制,

最好将 jar 文件放在项目的 lib 文件夹中,因为在迁移时它会帮助您将所有内容保存在一个地方。

如果有多个项目,最好在服务器上设置一个集中位置来放置 jar 文件。

【讨论】:

  • 这是否意味着当您创建另一个项目时,您会创建另一个副本?对我来说似乎是多余的
  • 如果有多个项目,最好在服务器上有一个集中位置,您可以在其中放置常见的 jar,例如 maven。但是,如果您正在运行单个项目,我会更喜欢 lib 是您的 jar 文件的首选位置。
  • 所以,也许可以使用像 Maven 或 Ivy 这样的依赖管理系统 ...
  • 是的,但是在某些项目中,出于安全原因,组织会阻止许多站点,因此此时不能使用 maven。对于这样的项目,最好拥有我上面指定的架构。
  • 在源代码控制系统的上下文中包含这些资源通常是个坏主意,并且这些资源的位置可能取决于构建系统 - 恕我直言
【解决方案2】:

.jar 文件可以保存在任何地方,只要 JVM 可以访问它。如果您使用javajavaw 命令来执行您的java 应用程序,使用-cp 开关指定.jar 文件就足以让java 知道在哪里可以找到额外的类。

因此,如果您在下载文件夹中下载了 commons-io-2.4.jar,则可以使用以下命令来运行您的程序,其中包含 Apache Commons IO 库中的所有类:

java -cp ~/Downloads/commons-io-2.4.jar <em>YourMainClassName</em>

但即使您可以在任何地方引用 .jar 文件,按照惯例,将所有外部库都放在 lib/ 目录中的项目所需的项目中,以便可以轻松找到它们。

参考资料:

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html,尤其是-cp部分

【讨论】:

    【解决方案3】:

    在正常用例中运行简单的 Java 应用程序,将 JAR 放在任何地方都可以通过 IDE 运行。

    但是

    当您从事 Web 应用程序开发时,您会发现有必要将外部 JAR 放在 Web-INF/lib 中。否则,当您部署应用程序时,服务器将无法在运行时找到 JAR,并会抛出 java.lang.ClassNotFoundException。您也可以将 JAR 直接放在 Server lib 文件夹下,但这不是通常的约定。

    对于 Swing/SWT 应用程序,外部 JAR 需要与可执行应用程序一起打包/提供。在这些情况下,您应该将 JAR 文件放在项目文件夹中,最好放在 LIB 文件夹下。例如看这个网站:Executable JAR

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多