是否可以将依赖项 class 二进制文件作为参数添加到 "javac"。(直接从终端编译 java 文件)
Is it possible to add dependency class binaries to "javac" as a argument.(compiling a java file directly from terminal)
每当我想看到 java library/functions 的行为时,我总是创建一个扩展名为 .java 的文件并向其中添加演示代码。我将尝试使用 javac(编译)和 java(到 运行)从终端编译和 运行 文件。
最近,我想了解“org.apache.commons.lang.RandomStringUtils”中方法“random”的行为。但是当我尝试编译它时,出现“包 org.apache.commons.lang 不存在”错误。
我知道我没有将 apache 库添加到系统路径等任何地方,编译器无法找到它。我发现了一些与 maven/ 或其他 ide 和 java 包相关的信息,并使用了类路径参数,但我不确定如何在我的场景中 运行 它。
我已经从 here 下载了 apache commons 二进制文件。
我想知道是否有办法在编译时将此路径信息作为参数提供给“javac”命令。或者如果有任何其他方法可以通过仅进行一些临时更改来编译它。
对不起,如果我使用任何 keywords/terminology 错误。如果您需要更多信息,请告诉我。
myjava.java
import java.util.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import org.apache.commons.lang.RandomStringUtils;
class myjava
{
public static void main(String args[])
{
ArrayList<String> mlist = new ArrayList<String>();
int x =10;
while(x>0){
x--;
mlist.add(RandomStringUtils.random(6));
}
System.out.println("printing list in Java");
System.out.println(mlist);
}
}
当我尝试从终端编译它时,出现以下错误。
sabodda@sabodda-mac java-python % javac myjava.java
myjava.java:5: error: package org.apache.commons.lang does not exist
import org.apache.commons.lang.RandomStringUtils;
^
myjava.java:37: error: cannot find symbol
mlist.add(RandomStringUtils.random(6));
^
symbol: variable RandomStringUtils
location: class myjava
2 errors
如果您需要更多信息,请告诉我。谢谢。
我正在使用安装了 java jdk 的 mac 并设置了 jdk 的路径。
编辑:回答我自己的问题。
我已经下载了 jar(commons-lang3-3.12.0.jar)(它是从下载的二进制文件中提取的)并将其复制到源文件的目录中(myjava.java)。
编译:
javac -cp .:commons-lang3-3.12.0.jar myjava.java
要执行:
java -cp .:commons-lang3-3.12.0.jar myjava
无法通过将二进制文件(即“.class”文件)作为依赖项作为 javac
命令行参数传递来显式添加它们。
javac
命令(以及其他 Java 工具链命令)使用 classpath 来查找依赖项 classes .这是一系列 class 路径条目,它们是目录或 JAR 或 ZIP 文件。因此,要添加单个依赖项 class,您需要将其放入 class 路径上的目录中,或者将其添加到 class 路径中的 JAR 或 ZIP 文件中,或将新条目(如上所述)添加到 classpath.
在您的情况下,您需要将 Apache Commons Lang 库的 JAR 文件添加到 class 路径。如果你这样编译:
$ javac myjava.java
改成这样:
$ javac -classpath .:<path/to/dependency.jar> myjava.java
有关详细信息,您应该阅读有关 class 路径如何工作以及如何指定的信息。参见
最后,请注意显式下载依赖项并将它们添加到您的构建和运行时 class路径是笨拙且过时的。 Maven 和 Gradle 等构建工具会为您处理。如果您打算在 Java 中实现任何重要的东西,您应该至少学会使用其中一种构建工具。
每当我想看到 java library/functions 的行为时,我总是创建一个扩展名为 .java 的文件并向其中添加演示代码。我将尝试使用 javac(编译)和 java(到 运行)从终端编译和 运行 文件。
最近,我想了解“org.apache.commons.lang.RandomStringUtils”中方法“random”的行为。但是当我尝试编译它时,出现“包 org.apache.commons.lang 不存在”错误。
我知道我没有将 apache 库添加到系统路径等任何地方,编译器无法找到它。我发现了一些与 maven/ 或其他 ide 和 java 包相关的信息,并使用了类路径参数,但我不确定如何在我的场景中 运行 它。
我已经从 here 下载了 apache commons 二进制文件。
我想知道是否有办法在编译时将此路径信息作为参数提供给“javac”命令。或者如果有任何其他方法可以通过仅进行一些临时更改来编译它。
对不起,如果我使用任何 keywords/terminology 错误。如果您需要更多信息,请告诉我。
myjava.java
import java.util.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import org.apache.commons.lang.RandomStringUtils;
class myjava
{
public static void main(String args[])
{
ArrayList<String> mlist = new ArrayList<String>();
int x =10;
while(x>0){
x--;
mlist.add(RandomStringUtils.random(6));
}
System.out.println("printing list in Java");
System.out.println(mlist);
}
}
当我尝试从终端编译它时,出现以下错误。
sabodda@sabodda-mac java-python % javac myjava.java
myjava.java:5: error: package org.apache.commons.lang does not exist
import org.apache.commons.lang.RandomStringUtils;
^
myjava.java:37: error: cannot find symbol
mlist.add(RandomStringUtils.random(6));
^
symbol: variable RandomStringUtils
location: class myjava
2 errors
如果您需要更多信息,请告诉我。谢谢。
我正在使用安装了 java jdk 的 mac 并设置了 jdk 的路径。
编辑:回答我自己的问题。 我已经下载了 jar(commons-lang3-3.12.0.jar)(它是从下载的二进制文件中提取的)并将其复制到源文件的目录中(myjava.java)。
编译:
javac -cp .:commons-lang3-3.12.0.jar myjava.java
要执行:
java -cp .:commons-lang3-3.12.0.jar myjava
无法通过将二进制文件(即“.class”文件)作为依赖项作为 javac
命令行参数传递来显式添加它们。
javac
命令(以及其他 Java 工具链命令)使用 classpath 来查找依赖项 classes .这是一系列 class 路径条目,它们是目录或 JAR 或 ZIP 文件。因此,要添加单个依赖项 class,您需要将其放入 class 路径上的目录中,或者将其添加到 class 路径中的 JAR 或 ZIP 文件中,或将新条目(如上所述)添加到 classpath.
在您的情况下,您需要将 Apache Commons Lang 库的 JAR 文件添加到 class 路径。如果你这样编译:
$ javac myjava.java
改成这样:
$ javac -classpath .:<path/to/dependency.jar> myjava.java
有关详细信息,您应该阅读有关 class 路径如何工作以及如何指定的信息。参见
最后,请注意显式下载依赖项并将它们添加到您的构建和运行时 class路径是笨拙且过时的。 Maven 和 Gradle 等构建工具会为您处理。如果您打算在 Java 中实现任何重要的东西,您应该至少学会使用其中一种构建工具。