我是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 文件。这是我的假问题......
* .jar扩展名是什么类似* .exe for Windows,仅适用于Java(可以在任何带有Java的平台上运行)?
我可以运行我的 helloWorld.jar ,但它只停留在屏幕上0.1秒,所以我看不到任何东西......我认为有错误。我该如何修复它(NetBeans不会抱怨我可以编译它)?
编辑#1:
在我的* .jar文件中,我拥有拥有main()的 Main.class 。所以这不是问题。 我刚刚发现它试图告诉我类似的东西:
线程“main”中的异常java.lang.NoClassDefFoundError ...
答案 0 :(得分:1)
您可以双击执行它,但如果您使用像Swing或AWT这样的UI框架,用户只会看到任何结果。
在您的情况下,System.out.printlns和System.console()。readLine()只能由命令控制台进行交互。
答案 1 :(得分:1)
jar是java档案。与.exe不同,它不能在处理器上执行,而是在JVM上执行。因此,执行jar文件的实际命令是java -jar jarfilename
,这意味着您将jar文件作为参数调用java虚拟机。
这是因为它不会等到任何东西,它只打印两行并退出。如果从命令行运行它,您将看到。如果程序的执行时间较长/程序等待某些输入,则不会快速关闭
答案 2 :(得分:0)
是的,你可以双击你的.jar来打开它,如果安装了java并在你的PATH中,或者在cmd中运行java -jar "jar_path"
。此外,它不会停止,因为执行是在您的最后一条指令之后完成的,因此它会退出。我不记得确切的语法,但尝试从用户那里读取密钥。它会暂停你的程序直到你按一个键。
编辑:我认为System.in.read();
正是您所寻找的。 p>
答案 3 :(得分:0)
答案 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.
的教程