在没有GUI的情况下运行.jar文件

时间:2014-08-01 05:13:39

标签: java eclipse windows

我为我正在进行的项目制作了这个小程序,当我从Eclipse运行时,它可以正常工作。我想要做的是有一个.jar文件,我可以双击并让它在我的控制台中运行。我在导出菜单上导出为JAR和可运行的JAR,并且它在任务管理器中启动Java进程,它同时使用CPU和内存,但我的屏幕中没有显示任何内容。我尝试使用命令提示符编译,它只是同样的事情。所以,我的问题是,我可以拥有一个没有GUI的独立Java应用程序吗?因为它似乎是我的问题:我按照教程制作了一个程序,它运行得很好。

我使用Windows 8 64位(因为我必须在我的项目中使用其他软件)。我是这个Java buissness的新手,所以如果你能尽可能地保持它简单;我真的很感激。提前谢谢。

import java.util.Scanner;
public class Distancia {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int check = 1;
    System.out.println("Kilómetros a Millas Náuticas\n");
    do {
        int cm = 0;
        int salida = 0;
        while (salida != 1){
        try {
            System.out.println("Escriba la distancia en kilómetros:");
            cm = sc.nextInt();
            salida = 1;
        } catch (Exception e) {
            System.out.println("Opción Inválida");
            sc = new Scanner(System.in);
            sc.reset();
        }
        } //Fin del While
    //Conversiones de distancias
    int km = cm*50;     // Conversión de Centimetros-mapa a Kilómetros
    double mn = km/(1.8);   // Conversión a Millas Náuticas
    //Cálculos de Velocidades
    System.out.println("Distancia en kilómetros: "+km+" km.");
    System.out.println("Distancia en millas náuticas: "+mn+" MN.\n");
    if (mn/5<24)
        System.out.println("Tiempo a 05 nudos: "+mn/5+" horas.");
    else{
        System.out.println("Tiempo a 05 nudos: "+mn/5+" horas.");
        System.out.println("Tiempo a 05 nudos: "+(mn/5)/24+" días.");
        System.out.println();
    }
    if (mn/8<24)
        System.out.println("Tiempo a 08 nudos: "+mn/8+" horas.");
    else{
        System.out.println("Tiempo a 08 nudos: "+mn/8+" horas.");
        System.out.println("Tiempo a 08 nudos: "+(mn/8)/24+" días.");
        System.out.println();
    }
    if (mn/12<24){
        System.out.println("Tiempo a 12 nudos: "+mn/12+" horas.");
        System.out.println();
    }
    else{
        System.out.println("Tiempo a 12 nudos: "+mn/12+" horas.");
        System.out.println("Tiempo a 12 nudos: "+(mn/12)/24+" días.");
        System.out.println();
    }
    }
    while (check !=0);
    sc.close();
    }
}

3 个答案:

答案 0 :(得分:0)

当然可以。
您需要做的就是让它由Java虚拟机运行 那是

java -jar "\path\to\YOUR_JAR_NAME.jar" 

但是,通过双击运行它不起作用。
但是如果您使用C#而不是Java,它会生成一个可爱的.exe,您可以通过双击来运行。

或者如果你坚持使用Java,你可以使用Launch4j:
http://launch4j.sourceforge.net/

如果问题是,它需要GUI,您可以执行AttachConsole WinAPI调用,以显示命令行窗口。

答案 1 :(得分:0)

Windows处理双击jar文件的方式是启动javaw,它旨在运行Java GUI程序,而不显示控制台窗口。当我双击Java控制台应用程序时,我在控制台窗口中看到类似的内容:

javaw -jar "C:\JavaPrograms\SampleConsoleApp\dist\DistanceCalc.jar"

由于javaw旨在启动GUI窗口,但没有显示任何其他内容,但没有。

如果您想创建一个双击启动的控制台应用程序,请创建一个名为launcher.bat的文本文件,并将启动命令放在该批处理文件中:

java -jar "C:\JavaPrograms\SampleConsoleApp\dist\DistanceCalc.jar"

Netbeans实际上会在您从IDE运行程序时为您生成此命令行,方法是在输出窗口中显示以下内容:

To run this application from the command line without Ant, try:
java -jar "F:\JavaPrograms\IndexMaker\dist\IndexMaker.jar"

答案 2 :(得分:0)

  1. 打开任何文本编辑器
  2. 写下这两行:

    java "yourmainclassname"
    pause
    
  3. 将该文件另存为&#34;名称&#34; .bat

  4. 从Windows GUI双击运行
  5. (当然这个新创建的.bat文件必须与.class在同一个文件夹中)