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

Fro*_*man 1 java terminal swing

我最近开始学习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;

    }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

str*_*yba 5

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

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

编辑: JAR教程