如何在Java中导入库

时间:2016-11-27 02:44:06

标签: java

我刚刚找到project in the Internet,我需要编译并理解如何使用这些库; 但我不知道如何编译它,因为我不了解如何包含必需的库。

我在Java上编写了三天的编码,而且我甚至不了解如何将我自己的.java文件包含在一起工作。 (我从另一个Foo.java文件调用bar()方法,如Foo.bar())。

我需要有人告诉我,或者只是给我一个指向任何快速指南的链接如何在没有任何其他软件(例如IDE)的情况下执行此操作。只是javac和java命令。

4 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。

最简单的方法(虽然肯定不是最好的方法!)如下:

  1. 查找包含预编译类的ZIP或JAR文件。提示:看这里...... https://github.com/sarxos/webcam-capture

  2. 下载。

  3. 找出文件的绝对路径名。

  4. 将绝对路径名添加到用于编译和运行的CLASSPATH;例如如果您当前正在尝试从当前目录编译:

      javac -cp .:/path/to/library.jar filename ...
      java -cp .:/path/to/library.jar classname args ...
    

    对于Windows,请使用Windows路径名,并使用;代替:作为类路径分隔符。

  5. 在这种特殊情况下,“二进制分发”ZIP文件包含嵌套JAR文件中的已编译类。此外,在ZIP文件的lib目录中,还有一些依赖的JAR文件。因此,您需要解压缩ZIP文件并将每个JAR文件添加到类路径中,如上所述。 (您可能需要阅读上面的文档链接以了解classpath通配符的工作原理......)

    我假设您知道如何将相关导入添加到源代码中。

    这是一种简单的方法。最好的方法是安装Maven并将项目设置为maven项目,然后向库中添加依赖项。完成后,Maven将自动处理下载,依赖项,类路径等。

    Java IDE通常可以为Maven提供公平的集成。 Eclipse的集成有点“绳索”IMO,因为Eclipse和Maven在某些事情上存在冲突的模型。但它运作良好。我无法谈论其他IDE的经验。

答案 1 :(得分:2)

你正在为一个刚开始的人咬掉一大块。

确定你知道什么是"包"是的,你需要了解java包与java源,类和jar文件的目录结构之间的关系;之后,我们可以介绍一个" classpath"的概念。为了试图短路,我会尝试告诉你如何通过死记硬背使用这些库,但是当我们不能谈论它时,很难说有多少东西需要解释。但我会尝试。

https://github.com/sarxos/webcam-capture/blob/master/README.md包含一个zip文件的链接,声称其中包含您提到的项目中所有必需的库。我可以假设你知道Zip文件是什么以及如何扩展它吗?您应下载此文件,然后从其根目录中提取jar文件,并在其lib目录中提取两个jar文件。将所有这三个文件放在要执行javac的目录中。

为了使用其中一个类(可能你只是使用来自网络摄像头捕获jar的类),你需要知道该文件所在的包。例如, Webcam类位于com.github.sarxos中,因此要使用该类,您将包含该行

import com.github.sarxos.Webcam;

靠近您自己的源文件的顶部。然后你可以在你的源代码中使用Webcam,编译器会知道你指的是该包中的Webcam类。

为了编译它,你必须让编译器知道在哪里找到类文件。编译行看起来像这样:

javac -cp .;webcam-capture-0.3.10.jar;bridj-0.6.2.jar;slf4j-api-1.7.2.jar MyClass.java

(这是Windows语法;如果您使用* nix系统,则使用":"而不是&#34 ;;"。)我们假设MyClass是在"默认"包;如果它在某个其他包中,您必须将其包装限定名及其名称。您无法将默认目录设置为源文件所在的位置并跳过输入包名称,您需要从" root"你的包名。顺便说一句,这不仅会编译MyClass,还会编译MyClass引用的所有类。假设它是主要的'在java应用程序中的类,并且你不想做任何关于使用Class.forName()实例化文件的事情,这个javac命令将编译你的程序所需的所有类。

一旦你编译没有错误,你可以使用相同的类路径字符串运行它:

java -cp .;webcam-capture-0.3.10.jar;bridj-0.6.2.jar;slf4j-api-1.7.2.jar MyClass

所以这至少涵盖了#34;包括一个图书馆&#34 ;;它给你一个告诉编译器然后运行时在(jar)库中找到类文件的位置的例子,我提到了" import"虽然不是必需的,但是引用其他类的标准做法,无论它们是在库中还是在您自己的代码中。

祝你好运。

答案 2 :(得分:0)

该项目有一个pom.xml。这意味着它使用Maven(构建和依赖管理工具)。 Try to follow this guide,并在您的系统上安装maven。

在控制台上运行mvn --version,检查maven是否安装正确。然后导航到项目文件夹,然后运行mvn。这将自动下载所有必需的依赖项(即第三方库)。

同样,如果您不使用任何IDE,您可能需要将系统本地maven repo中的这些库复制到您的项目文件夹(将它们包含在类路径中)。您可能希望更多地阅读类路径。

然后尝试运行您的文件。

答案 3 :(得分:0)

以下是编译项目所需的步骤:

  • 从GitHub下载或克隆项目
  • 安装Maven(https://maven.apache.org/install.html
  • 从项目的根目录(pom.xml所在的位置)运行mvn compile
  • 这将下载所需的所有库并编译项目。