【问题标题】:How to include jar files with java file and compile in command prompt如何在 java 文件中包含 jar 文件并在命令提示符下编译
【发布时间】:2012-03-12 19:19:24
【问题描述】:

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

【问题讨论】:

标签: java jar command-prompt


【解决方案1】:

您可以使用“-cp”选项将您的 jar 文件包含在“javac”命令中。

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

你也可以使用“-classpath”来代替“-cp”

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

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

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

您可以在this blog找到更多详细信息。

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

【讨论】:

  • javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.java 为我工作。我用的是mac。我在某处读到 ':' 用于 unix。
  • 我使用过这个命令,但是当试图访问 jar 文件中的类时,我得到了 ClassNotFoundException。
  • .: 是做什么的?对不起,如果这是一个愚蠢的问题,但对我来说并不明显。
  • @kensen。错字。用分号 (;) 替换 : (冒号)
  • 以上在 ubuntu 上对我不起作用。我试过不带引号,它起作用了。前任。 javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
【解决方案2】:

请在 Linux 上尝试

javac -cp jarfile source file 

示例:-

javac  -cp .:/jars/* com/template/*.java

【讨论】:

  • 当我尝试 EXAMPLE :- 并将 .:/jars 替换为我的 JAR 文件所在的目录时,我收到错误消息 javac: invalid flag: /location/of/first/jar/file.jar。跨度>
  • stackoverflow.com/questions/27915204/…请参考这个,它可能会解决你的问题
  • .:./jars/* 在尝试指向本地项目目录 jar/ 时有效。
【解决方案3】:

语法适用于 windows dos 命令:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

【讨论】:

  • 上述命令执行成功后如何运行java类文件?
  • java -cp first.jar:second.jar:third.jar MyFile
【解决方案4】:

以下是步骤,

  1. 将所有 jars 和您的 .java 文件复制到同一个文件夹中(提及文件名而不是提及长路径会很容易。尽管您可以将 jar 和 .java 保存在不同的文件夹中)。

  2. 编译,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
    
  3. 执行,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>
    

我希望这会有所帮助!

【讨论】:

  • 感谢您还展示了如何执行。点冒号又做了什么?是当前目录和文件分隔符吗?
  • 是的,它是当前目录和 Unix 文件分隔符(在 Windows 上是分号)。
  • 当然目的或 javac -cp libs/xxx.jar program.java 将构建一个最终的独立输出文件,因此您在运行时不再需要使用 -cp 因为这意味着我需要将我的 libs 文件夹复制到我希望运行应用程序的位置?
【解决方案5】:

尝试通过环境变量设置将所有依赖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

希望这能解决您的依赖问题。

【讨论】:

    【解决方案6】:

    这将创建 .class 文件:

    javac -classpath "[jarname with specified path]" [java filename]
    

    这将执行类文件:

    java -cp [jarname with specified path]: [java filename]
    

    【讨论】:

    • java 命令显示错误原因:java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 我想编译** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.java 和**运行 java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
    【解决方案7】:

    试试这个。

    javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java
    

    【讨论】:

      【解决方案8】:

      需要在编译时和运行时指定依赖关系

      要编译使用这种格式

      javac -cp "*.jar;classfile_path" filename.java
      

      例子:

      javac -cp "ojdbc6.jar;c:\programs" Main.java
      

      【讨论】:

      • 这个答案虽然正确,但似乎并没有添加其他答案尚未说明的任何内容。如果此答案与其他答案之间存在一些关键区别,最好解释一下您的答案为何不同。
      • 您提到了在运行时和编译时指定依赖关系,但没有解释如何在运行时指定它们。
      【解决方案9】:

      有时进行以下更改会起作用:

      java -cp ".;%CLASSPATH%" classfilename 
      

      注意:在 Windows 上。对于 linux,请改用 $CLASSPATH

      【讨论】:

        【解决方案10】:

        javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

        使用 -cp 命令,我们指定在哪里可以找到编译类所需的附加库的路径。 jar1、jar2、jar3,在jars文件夹中,用于编译abc.java类。

        【讨论】:

        • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
        【解决方案11】:

        如果您使用的是 Ubuntu:

        /opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java
        

        转到文件夹位置(包结构外)

        /opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample
        

        注意:请查看文件位置和包名

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多