如何将Java程序转换为jar文件?

8

需要大家的帮助... 我试图将一个简单的Java程序转换为jar文件,但好像什么也没发生。 我有两个文件:Tester.java、Tester.Class。 然后我使用了这个命令行:

jar -cvf Tester.jar Tester.class

.jar文件已经创建,但好像什么都不起作用。 我错过了什么吗?


2
@Matthew,我猜这可能是OP想要的。 (设置Main-Class,您将能够直接从jar运行程序。)您的评论作为实际答案可以很好地工作。 - Jonik
5个回答

13

要运行你创建的jar文件中的程序,您需要执行以下操作:

java -cp Tester.jar your.package.Main
更方便的执行jar文件的方式是能够进行以下操作
java -jar Tester.jar

但是,这需要您在清单文件中指定主类,并将其包含在jar文件中:

  • 放置

    Manifest-Version: 1.2
    Main-Class: your.package.Main
    

    在manifest.txt中

  • 创建jar文件的方法:

  • jar cvfm Tester.jar manifest.txt Tester.class
    

@aioobe 如果我只使用一个不在包中的简单类,我应该怎么做? - pharaon450
和我的答案一样,不需要 your.package. - aioobe

6
如Matthew Flaschen所回答的那样,您需要在您的jar包中拥有一个“清单文件”,其中应该包含Main-Class头,指出在jar包中要执行的主类。aioobe的答案完美地阐述了如何实现最简单的方式。
但是,我建议您不要总是手动完成这个过程,而是可以看一下构建工具,比如Apache Ant(或Maven,但可能会更难入门),它们非常常用于自动化这些构建序列。
使用Ant,您可以创建一个“构建文件”(通常命名为build.xml),如下所示:
<project name="Tester">
    <target name="build" 
            description="Compiles the code and packages it in a jar.">

        <javac srcdir="src" destdir="classes" source="1.6" target="1.6"/>

        <jar destfile="Tester.jar">
            <fileset dir="classes"/>
            <manifest>
                <attribute name="Main-Class" value="com.example.Tester"/>
            </manifest>
        </jar>
    </target>
</project>

现在,调用ant build会编译您的代码并将其打包到“Tester.jar”中,其中还包含正确类型的清单标头,以便您可以使用java -jar Tester.jar运行它。(请注意,此示例假定您的源代码位于相对于运行命令的“src”目录中。当然,您还需要安装Ant。)
如果您决定尝试Ant,则其官方手册将非常有用(特别是Ant“任务”的列表,例如显示可以为特定任务提供哪些选项的javacjar)。

3
如果你想要迟到的话:
java -jar Tester.jar

你应该阅读这个教程课程

2

2

我建议使用一些集成开发环境(IDE),例如Netbeans、Eclipse、IntelliJ IDEA等,专注于你的编程工作(通过点击来构建你的程序)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接