在Jar文件中运行类


176

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

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


java -cp myJar.jar myClass对我来说效果很好-您在命令行中是否有一个虚假的时期而不是空格?
克里斯·多德

1
当您说要“使用”该类时,您是什么意思?您是否要特别调用一个主要方法?
Marsellus Wallace 2011年

Answers:


256

使用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


10
只是添加它-如果com.mypackage.myClass(在上面的示例中)具有对其他jar的依赖关系,请按以下方式运行它:java -cpdependentfile1.jar; dependentfile2.jar; c:\ location_of_jar \ myjar.jar com。 mypackage.myClass
akjain

2
可能需要注意的可能的失败路径:确保您的类的完全合格路径与jar文件中的内容完全匹配。如果您解压缩-l /location-of-jar/myjar.jar,并看到com / mypackage / myClass以外的内容,则这是您的问题。(例如,如果您看到bin / com / mypackage / myClass,则应将其CD到bin中以构建您的jar文件;您将无法使用。)
Scott C Wilson

使用MyClass,而不是myClass
Breno Inojosa

通过尝试上述操作,我在com.company.project.demo.bdd.runner.Execute.main(Execute.java:20处的线程“ main” java.lang.NoClassDefFoundError:cumcum / api / cli / Main中获得了错误Exception )由以下原因引起:java.lang.ClassNotFoundException:cumber.api.cli.Main在java.net.URLClassLoader.findClass(未知源)在java.lang.ClassLoader.loadClass(未知源)在sun.misc.Launcher $ AppClassLoader。 java.lang.ClassLoader.loadClass(未知源)的loadClass(未知源)...另外1个
Vaibhav_Sharma

24

你要:

java -cp myJar.jar myClass

文档给出了下面的例子:

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

18

Java有两种类型的JAR文件:

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

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


6

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

您使用以下命令行:

java -cp ./myJar.jar myClass

哪里:

  1. myJar.jar当前路径中,请注意,.在大多数系统上,它不在当前路径中。一个完全合格的路径此处优选为好。

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


1

这是执行的正确方法.jar,并且其中的一个类.jar应具有main()的参数以及以下参数:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.