【问题标题】:How to compile java files using external libraries without using an IDE(Netbeans etc..)?如何在不使用 IDE(Netbeans 等)的情况下使用外部库编译 java 文件?
【发布时间】:2018-12-27 06:17:45
【问题描述】:

我有一个 NetBeans java 项目。

这个项目(src文件夹)由6个.java文件组成。 该项目还使用外部库 library.jar 和来自 apache commons 的各种 jar 文件(日志、配置等)

所有 java 文件(编译时)都被外部类使用。

Netbeans 生成一个构建 xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<project name="CityVisit" default="default" basedir=".">
    <description>Builds, tests, and runs the project CityVisit.</description>
    <import file="nbproject/build-impl.xml"/>

</project>

它引用 nbproject/build-impl.xml 但在该文件内部没有引用 library.jar 也没有引用其他 jar。

我的问题是,如果我尝试使用 javac *.java 进行编译,它不会编译并且只会打印一长串错误(可能是因为它找不到外部库)。

大部分错误是这样的:

 **can't find symbol <name> **

其中一个外部 jar 库中包含的类/对象的名称。

我该怎么办?我的目标是能够在不使用 Eclipse、Netbeans 等 IDE 的情况下在另一台机器上编译我的代码。

据我了解,解决方案是制作一个构建文件并使用 ant 部署它,但实际上我应该怎么做?

提前感谢您的任何提示。 问候

【问题讨论】:

    标签: ant compiler-errors


    【解决方案1】:

    首选方法是使用 Maven 来定义您的依赖项并构建您的项目。更多信息可@http://maven.apache.org/

    【讨论】:

    • 谢谢。我应该如何在 Maven 项目中转换我的 Netbeans java 项目? (Netbeans 有一个“新的 Mavel 项目”但我不明白该怎么做)
    • 我刚刚看到了链接。看起来还可以(我稍后再试)。只是一个问题:当我有一个 Mavel 项目时,我必须做什么才能在另一台计算机上编译该项目?
    • 确保在另一台计算机上安装了 maven,然后运行 ​​mvn clean:install
    • 最后,我解决了从 Eclipse 导出构建文件并将其与 ant 一起使用的问题。我接受你的努力。谢谢!
    【解决方案2】:

    使用 javac -cp ,您可以告诉编译器在哪里寻找外部 jars :

    javac -cp /lib/123.jar:/lib/abc.jar yourMainClass.java
    

    请注意我是如何给出 jar 的路径的,而不仅仅是名称(除非它们与您自己的代码位于同一文件夹中。

    编译完成后运行:

    java -cp .:/lib/123.jar:/lib/abc.jar yourMainClass
    

    【讨论】:

    • 但是没有“通用方法”吗?我的意思是:给出一个所有 jar 所在的目录。此外,生成的 .class 文件被其他类使用,应该在没有任何附加参数的情况下运行
    【解决方案3】:

    通过创建新的 Java Maven 项目将您的项目转换为 Maven 项目,将您的文件复制粘贴到 maven 源文件夹中,然后编译。

    【讨论】:

      【解决方案4】:

      请在库列表周围使用双引号 (") 和分号 (;)。

      • 对于多个库,用分号分隔库:

        javac -cp "/lib/lib1.jar;/lib/lib2.jar" yourMainClass.java
        
      • 仅适用于一个库:

        javac -cp "/lib/lib1.jar" yourMainClass.java
        

      【讨论】:

        猜你喜欢
        • 2015-08-17
        • 2011-07-04
        • 2023-03-22
        • 2017-11-09
        • 2013-09-27
        • 2021-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多