【问题标题】:Run class in Jar file在 Jar 文件中运行类
【发布时间】:2011-10-10 11:24:26
【问题描述】:

如果您在 /myfolder 中有一个名为 myJar.jar 的 jar 文件,并且您想从中使用名为 myClass 的类,您如何从命令行执行此操作?

我以为是进入目录并说java -cp myJar.jar.myClass,但这不起作用。任何帮助将不胜感激。

【问题讨论】:

  • java -cp myJar.jar myClass 对我来说很好用——你的命令行中有一个虚假的句号而不是空格吗?
  • 你说你想“使用”那个类是什么意思?有没有你特别想调用的主要方法?

标签: java command-line jar


【解决方案1】:

这是执行.jar 的正确方法,.jar 中的任何一个类都应该有main(),以下是它的参数:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar

【讨论】:

    【解决方案2】:

    Java 中有两种可用的 JAR 文件:

    1. 包含清单文件的可运行/可执行 jar 文件。 要运行 Runnable jar,您可以使用 java -jar fileName.jarjava -jar -classpath abc.jar fileName.jar

    2. 不包含清单文件的简单 jar 文件,因此您只需提供路径 java -cp ./fileName.jar MainClass

    3. 即可运行主类

    【讨论】:

      【解决方案3】:

      使用java -cp myjar.jar com.mypackage.myClass

      1. 如果类不在包中,则只需 java -cp myjar.jar myClass

      2. 如果你不在myJar.jar所在的目录中,那么你可以这样做:

        1. 在 Unix 或 Linux 平台上:

          java -cp /location_of_jar/myjar.jar com.mypackage.myClass

        2. 在 Windows 上:

          java -cp c:\location_of_jar\myjar.jar com.mypackage.myClass

      【讨论】:

      • 只是添加它 - 如果 com.mypackage.myClass(在上面的示例中)对其他 jar 有依赖关系,请按如下方式运行它:java -cpdependentfile1.jar;dependentfile2.jar;c: \location_of_jar\myjar.jar com.mypackage.myClass
      • 一个可能的失败路径,以防万一这不起作用:确保你的类的完全限定路径与你的 jar 文件中的完全匹配。如果你解压缩 -l /location-of-jar/myjar.jar,并看到 com/mypackage/myClass 以外的其他内容,这就是你的问题。 (例如,如果你看到 bin/com/mypackage/myClass,你应该已经 cd'ed 到 bin 来构建你的 jar 文件;你没有工作。)
      • 使用 MyClass,而不是 myClass
      • 通过尝试上述方法,我在线程“main”java.lang.NoClassDefFoundError: cucumber/api/cli/Main at com.company.project.demo.bdd.runner.Execute 中收到错误异常.main(Execute.java:20) 引起:java.lang.ClassNotFoundException: cucumber.api.cli.Main at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 1 更多
      • 如果你在 linux 上使用 ':' 而不是 ';'对于添加依赖 jar,类路径分隔符 ':' 是 ';'在窗户上。示例:-> java -cpdependentfile1.jar:dependentfile2.jar:c:\location_of_jar\myjar.jar com.mypackage.myClass
      【解决方案4】:

      你想要:

      java -cp myJar.jar myClass
      

      Documentation 给出了以下示例:

      C:> java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool
      

      【讨论】:

        【解决方案5】:

        假设您在myJar.jar 文件所在的目录中,并且myClass 上有一个public static void main() 方法:

        您使用以下命令行:

        java -cp ./myJar.jar myClass
        

        地点:

        1. myJar.jar 位于当前路径,请注意. 不在大多数系统的当前路径中。 完全合格的路径也是首选。

        2. myClass 是类的完全限定包路径,该示例假定myClass默认包 中,这是不好的做法,如果它在嵌套包中,则为com.mycompany.mycode.myClass

        【讨论】:

          猜你喜欢
          • 2012-04-13
          • 2013-07-04
          • 2014-05-18
          • 1970-01-01
          • 2011-04-30
          • 2014-06-24
          • 1970-01-01
          • 1970-01-01
          • 2013-12-17
          相关资源
          最近更新 更多