Java应用程序仅在通过终端/命令提示符启动时才有效

时间:2012-03-03 10:25:04

标签: java swing terminal

我最近开始学习Java并且已经成功编写和编译我自己的应用程序(用Sublime Text编写,文本编辑器,并通过javac编译)。

当通过终端启动时应用程序运行完美(或者如果我在我的Windows PC上,则命令提示符),但是如果我尝试从文件本身启动它(在Windows中,双击它并确保Java是开放的 - 使用方法,或者在我的Ubuntu笔记本电脑上,使其可执行并执行相同的操作)我得到一个非常短暂的加载光标,然后什么都没有。

应用程序(在摄氏度和华氏度之间转换)使用一些简单的Swing对话框来获取用户的输入并显示结果。

import javax.swing.*;

public class DegreesConversion
{
public static void main( String [] args)
    {
    String input = JOptionPane.showInputDialog("Enter a temperature followed by either C for Celcius or F for Fahrenheit\nE.g. 30C or 86F");
    int degrees = Integer.parseInt(input.substring(0,input.length()-1));

    switch (input.toLowerCase().contains("f") ? 0 : input.toLowerCase().contains("c") ? 1 : 2){
        case 1:
            JOptionPane.showMessageDialog(null,(((degrees*9)/5)+32)+" degrees Fahrenheit", "Conversion complete", JOptionPane.INFORMATION_MESSAGE);
            break;
        case 0:
            JOptionPane.showMessageDialog(null,(((degrees-32)*5)/9)+" degrees Celcius","Conversion complete",JOptionPane.INFORMATION_MESSAGE);
            break;
        default:
            JOptionPane.showMessageDialog(null, "The input you entered was not recognised!","Unknown input", JOptionPane.ERROR_MESSAGE);
            break;

    }
    }
}

(这绝不意味着是一个严肃或功能非常强大的应用程序,它只是我自己尝试用Java创建的东西)

无论如何,我不确定为什么这个应用程序在编译时只在使用“java DegreesConversion”从CLI启动时才起作用,而不是在通过双击启动时。我已经在Google和Stackoverflow上寻找了有关此问题的答案,但是没有找到任何相关解决方案附近的内容,也没有提示为什么会这样。

我在考虑Java .class文件不能像.jars一样执行? 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

将您的类打包到一个jar文件中,并向其添加一个清单,指向具有您要执行的主方法的类。

然后您可以从终端执行java -jar jarFile.jar,但也可以轻松地运行它,例如Windows Open-With功能。

编辑: JAR tutorial