我正在学习Java,但遇到了问题。我创建了6个不同的类,每个类都有自己的main()
方法。我想.jar
为每个类创建可执行文件,即6个可执行.jar
文件。
到目前为止,我尝试了
java -jar cf myJar.jar myClass.class
我得到“无法访问jarfile cf”。我做错了,但我不知道该怎么办。如果这意味着某种意义,我还将使用Eclipse IDE。
Answers:
为了创建.jar文件,您需要使用jar
而不是java
:
jar cf myJar.jar myClass.class
另外,如果要使其可执行,则需要为应用程序指示一个入口点(即带有的类public static void main(String[] args)
)。通常,这是通过创建包含标头(例如)的清单文件来实现的。Main-Class
Main-Class: myClass
但是,正如Mark Peters指出的那样,在JDK 6中,您可以使用该e
选项来定义入口点:
jar cfe myJar.jar myClass myClass.class
最后,您可以执行它:
java -jar myJar.jar
-jar
参数吗?另外,由于您未指定清单,因此这将使其无法执行。(显然是在JDK 6+您可以使用“E”作为快捷方式,以避免手动提供的清单:jar cfe myJar.jar myClass myClass.class
)
jar -cvfm out.jar META-INF/MANIFEST.MF src/*.class
通常,您需要在清单中添加的内容比通过-e
开关获得的更多,在这种情况下,语法为:
jar -cvfm myJar.jar myManifest.txt myApp.class
内容为:“创建详细的jarFilename manifestFilename”,后跟要包含的文件。
请注意,您提供的清单文件的名称可以是任何名称,因为jar
它将自动重命名清单文件并将其放置在jar文件中的正确位置。
方式1:
让我们有一个包含主类testa的Java文件test.java,现在我们首先像javac test.java一样简单地编译我们的java文件,在同一目录中创建manifest.txt文件,并编写Main-Class:mainclassname。例如:
Main-Class: testa
然后我们通过以下命令创建jar文件:
jar cvfm anyname.jar manifest.txt testa.class
然后我们通过以下命令运行jar文件:java -jar anyname.jar
方式二:
让我们有一个名为one的包,每个类都在其中。然后我们通过以下命令创建jar文件:
jar cf anyname.jar one
然后我们在anyname.jar文件中的META-INF目录中打开manifest.txt并编写
Main-Class: one.mainclassname
在第三行中,然后我们通过以下命令运行jar文件:
java -jar anyname.jar
使jar文件具有多个类文件:jar cf anyname.jar one.class two.class three.class ......
将所有6个班级放到6个不同的项目中。然后创建所有6个项目的jar文件。这样,您将获得6个可执行jar文件。
cf
甚至有效的选项java
?无论哪种方式,他都想创建jar,而不是运行它。反正根据问题。