如何在java文件中包含jar文件并在命令提示符下编译

use*_*567 112 java jar command-prompt

我有3个jar文件和一个依赖于这些jar文件的.java文件.如何使用命令提示符使用这些jar文件编译.java文件?

ken*_*ohn 96

您可以使用"-cp"选项在"javac"命令中包含jar文件.

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java
Run Code Online (Sandbox Code Playgroud)

而不是"-cp"你也可以使用"-classpath"

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java
Run Code Online (Sandbox Code Playgroud)

您可以通过正确设置环境变量"CLASSPATH"来在每次编译时包含jar.环境变量将存储需要用于编译/执行任何java文件的jar和类的路径.每次编译文件时都不必单独包含jar.

不同的机器有不同的方法将类路径设置为环境变量.Windows,Linux等的命令是不同的.

您可以在此博客中找到更多详细信息.

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
Run Code Online (Sandbox Code Playgroud)

  • `javac -classpath".:/ home/path/mail.jar; /home/path/servlet.jar"MyJavaFile.java"为我工作.我在用mac.我在某处读到':'用于unix. (7认同)
  • 我已经使用过这个命令但是当试图访问jar文件中的类时,我得到的是ClassNotFoundException. (2认同)
  • `。:`有什么作用?抱歉,这是一个愚蠢的问题,但对我而言并不明显。 (2认同)

Jam*_*eer 20

请试试Linux

javac -cp jarfile source file 
Run Code Online (Sandbox Code Playgroud)

示例: -

javac  -cp .:/jars/* com/template/*.java
Run Code Online (Sandbox Code Playgroud)


小智 18

语法适用于windows dos命令:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java
Run Code Online (Sandbox Code Playgroud)

  • 成功执行上面的命令后如何运行java类文件? (4认同)
  • java -cp 第一个.jar:第二个.jar:第三个.jar MyFile (2认同)

Sar*_*van 15

尝试通过环境变量设置将所有依赖jar文件添加到类路径中,或使用以下步骤:

  1. 打开命令提示符.
  2. 将目录更改为您要编译的java文件的位置.
  3. 设置依赖jar文件的类路径,如下所示:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. 现在,您可以编译您的java文件.(命令:javac YourJavaFile.java)

希望这将解决您的依赖问题.


imb*_*ond 12

以下是步骤,

  1. 将所有jar和.java文件复制到同一个文件夹中(很容易提到文件名而不是提到长路径.虽然你可以将jar和.java保存在不同的文件夹中).

  2. 编译,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>
    
    Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!

  • 感谢您还展示了如何执行。点冒号又做了什么?它是当前目录和文件分隔符? (3认同)
  • 是的,它是当前目录和 Unix 文件分隔符(在 Windows 上是分号)。 (2认同)

小智 5

这将创建.class文件:

javac -classpath "[jarname with specified path]" [java filename]
Run Code Online (Sandbox Code Playgroud)

这将执行类文件:

java -cp [jarname with specified path]: [java filename]
Run Code Online (Sandbox Code Playgroud)

  • java 命令显示错误 原因为:**java.lang.ClassNotFoundException: org.slf4j.LoggerFactory** 我想 **编译 ** `javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar “ MyFile.java` 和 **run** `java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java 我也尝试过 java -cp /home/scorncer/Downloads/spark-core- 2.3.jar:我的文件` (2认同)

Shr*_*vya 5

尝试这个。

javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java
Run Code Online (Sandbox Code Playgroud)