【问题标题】:How to run Java program in terminal with external library JAR如何使用外部库 JAR 在终端中运行 Java 程序
【发布时间】:2012-02-15 11:46:54
【问题描述】:

这应该很简单,但我以前从未做过,也没有找到任何解决方案。

我目前正在使用 Eclipse 编写我的程序,该程序导入了一些外部 JAR 库,例如 google data api 库。我可以使用 Eclipse 编译/构建/运行程序。

但是现在我想在终端运行它,那么我应该把那些JAR文件放在哪里,以及如何构建和运行程序?

谢谢!

【问题讨论】:

    标签: java jar


    【解决方案1】:

    你可以这样做:

    1)javac -cp /path/to/jar/file Myprogram.java

    2)java -cp .:/path/to/jar/file Myprogram

    所以,假设您在终端中的current working directorysrc/Report/

    javac -cp src/external/myfile.jar Reporter.java
    
    java -cp .:src/external/myfile.jar Reporter
    

    看看这里设置Classpath

    【讨论】:

    • 比如我把所有的JAR文件都放在src/external/,源文件在src/Report/Reporter.java,你能给出具体的命令吗?
    • 替换 ';'在 java -cp 中使用 ':' .;src/external/myfile.jar Reporter 为我工作..
    • @sattu:我相信你是在linux系统上的。
    • 使用外部 jar 和外部路径运行(jar 和我的 clas 在同一目录中)/usr/bin/java -cp /home/username/folderx/j.jar:/home/username/folderx MyClass
    • @RanRag 我在 Windows 系统上,我必须使用“;”而不是“:”
    【解决方案2】:

    用于编译依赖于jar的java文件

    javac -cp path_of_the_jar/jarName.jar className.java

    用于执行类文件

    java -cp .;path_of_the_jar/jarName.jar 类名

    【讨论】:

      【解决方案3】:
      1. 您可以在环境变量CLASSPATH 中设置您的类路径。 在linux中,你可以添加喜欢 CLASSPATH=.:/full/path/to/the/Jars,例如 ..........src/external 并在旁边运行......src/Report/

      Javac Reporter.java

      java 记者

      同样可以在windows环境变量中设置。 例如,在 Win7 中

      右键开始-->计算机 然后属性-->高级系统设置-->高级-->环境变量 在用户变量中,单击classPath,然后编辑并在最后添加jar的完整路径。 瞧

      【讨论】:

        【解决方案4】:

        假设您的 jar 应用程序“myapp.jar”中写入了以下代码 sn-p。

        import org.json.JSONObject;
        public class Main {
        public static void main(String[] args) {
            // write your code here
                System.out.println("Hello World!");
                JSONObject jo = new JSONObject("{ \"abc\" : \"def\" }");
                System.out.println(jo.toString());
            }
        }
        

        它正在使用我们从中导入“org.json.JSONObject”的外部库 json.jar。 运行以下命令会报错。

        java -jar myapp.jar
        

        异常信息:

        线程“main”中的异常 java.lang.NoClassDefFoundError: org/json/JSONObject at com.reve.Main.main(Main.java:10) 引起:java.lang.ClassNotFoundException: org.json.JSONObject at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown来源)在 java.base/java.lang.ClassLoader.loadClass(未知来源) ... 1 更多

        我们必须在运行 jar 文件时包含 json.jar 文件。在构建 myapp.jar 文件之前,我们必须指定文件的类路径。

        在 META-INF/MANIFEST.MF 文件中:

        Manifest-Version: 1.0
        Class-Path: lib/json.jar lib/example2.jar
        Main-Class: com.reve.Main
        

        在 Class-Path 关键字下指定用空格分隔的外部库。然后在构建项目和工件之后,我们可以通过简单地编写我们上面讨论的相同命令来运行 jar 文件。

        【讨论】:

          猜你喜欢
          • 2020-02-22
          • 1970-01-01
          • 2014-09-12
          • 2021-11-10
          • 2014-06-04
          • 2015-08-22
          • 2012-02-03
          • 2016-12-10
          • 2020-08-05
          相关资源
          最近更新 更多