为命令行Java应用程序创建可运行的JAR文件

3
我使用Eclipse在Java中制作了一个命令行应用程序。我创建了可运行的JAR文件,如果我想运行它,必须通过命令提示符来运行。是否有任何方法可以让.jar文件在单击时打开命令提示符并运行程序?
编辑:为澄清起见,该程序在Eclipse控制台中运行,并且通过命令提示符运行我创建的.jar文件有效(即java -jar Minesweeper.jar)。我只想在单击.jar文件时像这样执行它。
2个回答

2

我注意到一个问题,当我尝试将命令行应用程序作为可运行的jar文件运行时。如果你试图做一些像创建和显示jframe这样的事情,它可以正常工作。我的唯一建议是,如果你在Windows上,可以创建一个批处理文件,其中包含以下行:

java -jar nameofjar.jar

将文件命名为类似run.bat的名称,然后双击它,它将运行命令行应用程序。除此之外,我不确定为什么基于命令行输入的应用程序会出现这个问题。

编辑:

如果您无法找到一种方法从双击jar文件中运行真正的命令提示符,则可以使用以下方法创建一个虚假的命令提示符来显示。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class FakeCommandPrompt {

private JTextArea myTextArea;
private JScrollPane scrollPane;
private JFrame mainFrame;

/**
 * Setup the fake command prompt.
 */
public FakeCommandPrompt()
{
    mainFrame = new JFrame();
    mainFrame.setBounds(new Rectangle(new Dimension(500, 400)));
    mainFrame.setBackground(Color.BLACK);

    myTextArea = new JTextArea();
    myTextArea.setBackground(Color.BLACK);
    myTextArea.setForeground(Color.WHITE);
    myTextArea.setEditable(false);
    myTextArea.setMargin(new Insets(10, 10, 10, 10));

    scrollPane = new JScrollPane(myTextArea);
    scrollPane.setBackground(Color.BLACK);

    mainFrame.add(scrollPane);
    mainFrame.setVisible(true);
}

public void printToCommandPrompt(String text)
{
    // Append the new next to the command prompt
    // Add a new line at the end
    this.myTextArea.append(text + "\n");
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    // Create and instance of the fake command prompt.
    FakeCommandPrompt commandPrompt = new FakeCommandPrompt();

    // Prints 0 -> 5 on the fake command prompt.
    for (int i = 0; i <= 5; i++)
    {
        commandPrompt.printToCommandPrompt(String.valueOf(i));
    }
}

}

此外,您能告诉我创建可运行的JAR文件的步骤吗?上面的代码应该可以通过双击JAR文件来运行。如果不能,请检查您创建JAR文件的方式是否有误。

这在所有意图上都是有效的...我现在会保持这个问题开放一段时间,只是为了看看是否有什么运气的机会。等一下,这里有一个想法:是否有任何方法可以创建一个GUI类型的东西来显示控制台输出? - Salem
你可以创建一个JScrollPane并将JTextArea添加到其中。您可以修改JScrollPane和JTextArea的属性,使其看起来像命令提示符,而不是使用诸如System.out.println()之类的语句来打印到标准输出,使用myTextArea.append("some text\n"); 将文本打印到文本区域。 - MBU
你是我的英雄。作为一个Java新手,我一直想知道这是否可能。 - Salem

0
你是在使用Windows操作系统吗?
你尝试过创建一个指向你的jar文件的快捷方式吗? 桌面 > 右键点击 > 创建快捷方式 > [指定你的jar文件路径]
如果你确实有可运行的jar文件,你应该可以通过单击或双击来运行它。

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