当前位置: 首页 > 面试题库 >

如何创建可执行Java程序?

凤经武
2023-03-14
问题内容

我已经在JCreator中编写了Java程序,一切都已完成,但是我想从中创建一个可执行文件,即,我不想通过加载Java类并编译然后执行来运行程序,而是将其作为独立的可执行文件。

最快的方法是什么?


问题答案:

你可以使用SDK附带的jar工具,并创建该程序的可执行版本。

这就是完成的方式。

我将从命令提示符中发布结果,因为它更容易,但是使用JCreator时也应如此。

首先创建你的程序:

$cat HelloWorldSwing.java
    package start;

    import javax.swing.*;

    public class HelloWorldSwing {
        public static void main(String[] args) {
            //Create and set up the window.
            JFrame frame = new JFrame("HelloWorldSwing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            JLabel label = new JLabel("Hello World");
            frame.add(label);

            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    }
    class Dummy {
        // just to have another thing to pack in the jar
    }

很简单,只显示一个带有“ Hello World”的窗口

然后编译它:

$javac -d . HelloWorldSwing.java

在“开始”文件夹Dummy.class和HelloWorldSwing.class中创建了两个文件。

$ls start/
Dummy.class     HelloWorldSwing.class

下一步,创建jar文件。每个jar文件都有一个清单文件,其中包含与可执行文件相关的属性。

这是清单文件的内容。

$cat manifest.mf
Main-class: start.HelloWorldSwing

只需描述一下主类是什么(带有公共static void main方法的主类)

清单准备就绪后,将调用jar可执行文件。

它有很多选项,在这里我使用-c -m -f(-c创建jar,-m指定清单文件,-f =该文件应命名为..)和我想添加的文件夹。

$jar -cmf manifest.mf hello.jar start


 类似资料:
  • 问题内容: 每个人,如何为Eclipse Helios中用Java编写的程序创建可执行文件?我的意思是创建一个小图标,使其只能通过双击其图标来启动程序,谢谢事先 编辑, 我的意思是Windows可执行文件 问题答案: 在eclipse中导出.jar。(如何) 使用JSmooth (信息)制作一个.exe文件。(如何)

  • 问题内容: 我使用eclipse创建可执行jar。它依靠外部其他罐子。 在Eclipse中,只需选择即可。 您可以创建一个可执行jar。它可以在安装了jre的任何地方执行。 但是如果我使用命令行来编译jar。 它可以生成jar。但是jar只能在产生它的目录中执行。如果我将其放入另一个目录或计算机,则会抱怨。 因此,我的问题是,如何使用命令行作为Eclipse生成可执行jar。 问题答案: jar文

  • 我在Eclipse中完成了我的项目。我有,,和

  • 问题内容: 我想创建一个可以用插件扩展的Java程序。我该怎么办?我应该在哪里找? 我有一组插件必须实现的接口,它应该在jar中。该程序应在相对(相对于该程序)文件夹中监视新的jar,并以某种方式注册它们。 尽管我确实喜欢Eclipse RCP,但我认为这对于我的简单需求来说实在太多了。 对于Spring同样适用,但是既然我还是要研究它,我不妨尝试一下。 但是,我仍然希望找到一种方法来尽可能简单地

  • 如何用Gradle创建可执行JAR? 我尝试了,但它不起作用。

  • 问题内容: 我想创建一个线程池,它将执行最新提交的任务。关于如何做到这一点的任何建议? 谢谢 问题答案: 您可能只需要实现自己的包装,即可将要约/投票映射到堆栈。然后将此作为您传递给的实现。我的建议是包装一个现有的实现,例如。 这是不同步的,因此您需要使用同步器包装每个方法(如果不是更奇特的东西)。 您还需要为阻止操作引入/ 条件。 最后,您需要将一组极性(“放”侧或“取”侧)映射到出队的另一端(