如何打开* .jar文件?是否与。* exe相同?

时间:2011-04-05 17:20:56

标签: java jar

我是Java的新手。我刚刚使用NetBeans创建了我的第一个Java应用程序。这是源代码:

package helloWorld;


public class Main {

    public static void main( String[] args ) {

        System.out.println( "What's your name, sparky? =]" );
        String sparkysName = System.console().readLine();

        System.out.println( "Was that so hard, " + sparkysName + "? =P" );

    }

}

编译后我有 helloWorld.jar 文件。这是我的假问题......

  1. * .jar扩展名是什么类似* .exe for Windows,仅适用于Java(可以在任何带有Java的平台上运行)?

  2. 我可以运行我的 helloWorld.jar ,但它只停留在屏幕上0.1秒,所以我看不到任何东西......我认为有错误。我该如何修复它(NetBeans不会抱怨我可以编译它)?

  3. 编辑#1:

    在我的* .jar文件中,我拥有拥有main()的 Main.class 。所以这不是问题。 我刚刚发现它试图告诉我类似的东西:

      

    线程“main”中的异常java.lang.NoClassDefFoundError ...

6 个答案:

答案 0 :(得分:1)

您可以双击执行它,但如果您使用像Swing或AWT这样的UI框架,用户只会看到任何结果。

在您的情况下,System.out.printlns和System.console()。readLine()只能由命令控制台进行交互。

答案 1 :(得分:1)

  1. jar是java档案。与.exe不同,它不能在处理器上执行,而是在JVM上执行。因此,执行jar文件的实际命令是java -jar jarfilename,这意味着您将jar文件作为参数调用java虚拟机。

  2. 这是因为它不会等到任何东西,它只打印两行并退出。如果从命令行运行它,您将看到。如果程序的执行时间较长/程序等待某些输入,则不会快速关闭

答案 2 :(得分:0)

是的,你可以双击你的.jar来打开它,如果安装了java并在你的PATH中,或者在cmd中运行java -jar "jar_path"。此外,它不会停止,因为执行是在您的最后一条指令之后完成的,因此它会退出。我不记得确切的语法,但尝试从用户那里读取密钥。它会暂停你的程序直到你按一个键。

编辑:我认为System.in.read();正是您所寻找的。

答案 3 :(得分:0)

<。> .jar文件使用标准的Zip压缩格式。您可以打开任何可以打开Zip文件的jar文件。 (WinZip,WinRar,7-zip等)。

答案 4 :(得分:0)

首先,Jar文件是一个普通的Zip文件,所以你可以用任何能够打开zip文件的程序打开它 - 看看里面。

要从Jar文件运行代码,您需要在清单文件中命名主类:具有特殊格式的特殊位置的特殊文件。 JDK / JRE在Jar文件中查找此文件并运行其中指定的类。

Google for MANIFEST.MF。

答案 5 :(得分:0)

jar文件只是将所有Java文件压缩在一起。您可以选择应用程序的所有文件并将它们放在jar文件中。但是jvm能够执行jar文件。为此,您需要指定哪个java文件(驻留在jar中)具有main方法。这必须在创建jar时完成。

因此,jar文件可以在任何安装了JVM的平台上运行。在您的情况下,您无法看到命令行,因为您只是显示某些内容,当程序终止时,命令行消失。因此,尝试这样做:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i = br.readLine();

在文件的末尾,您可以看到命令行没有被终止并等待您的输入。它在命令行消失的c或c ++应用程序中的工作方式相同,除非你有一个getch()或类似的东西。

供您参考,您可以获得有关如何创建和运行Jar文件here.

的教程