在没有命令提示符的情况下在Windows上运行JAVA 8 jar

时间:2015-10-01 11:30:54

标签: java windows jar click double

这是一个简单的Hello World测试应用程序。

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        try {
            System.in.read();
        } catch (IOException e) {
            System.out.println("IOException : "+e.getMessage());
        }
    }
}

它在Eclipse中导出为“Runnable JAR File”。 enter image description here

在命令提示符下使用java -jar hello.jar打开它。

然而,当尝试使用双击打开它时,没有任何反应。

注1:Java Platform是与此类型相关联的默认程序。

enter image description here

注2:java -version

  

java版“1.8.0_60”

     

Java(TM)SE运行时环境(build1.8.0_60-b27)

     

Java HotSpot(TM)64位服务器VM(内置25.60-b23,混合模式)

问题双击不执行命令行JAVA 8 jar文件。 我该如何解决?

3 个答案:

答案 0 :(得分:4)

如果您双击*.jar,它实际上是以javaw -jar Hello.jar开头的。 java.exejavaw.exe之间的区别在于javaw没有关联的控制台窗口。由于您的测试应用程序没有显示任何GUI元素,因此它看起来像是不会被执行。

根据您想要实现的目标,您可以创建一个脚本来运行您的应用程序,也可以创建一些图形界面。

答案 1 :(得分:2)

从文件资源管理器执行JAR时,没有shell可以将文本输出写入。当您从命令行运行它时,它已经包装在shell中,因此System.out流已经设置为shell的输出流,因此打印语句可见。

最简单的实用解决方案是创建一个执行java -jar hello.jar命令的批处理文件,当您在文件资源管理器中打开命令窗口时,该命令将启动命令窗口。

另一种解决方案是使用cmd.exe从Java应用程序中启动Runtime.exec()上下文,并将输出流设置为与它返回的流程对象相同。

最优雅的解决方案,但需要更多后台工作的解决方案,是在 JFrame 和 JTextArea 组成的简单GUI > JScrollPane ,然后您将输出附加到文本区域。

答案 2 :(得分:1)

您的jar可能正在使用javaw.exe打开。您可以通过执行命令

来验证
ftype | find "jarfile"

如果显示为javaw.exe

ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\javaw.exe" -jar "%1" %*

将其更改为java.exe

ftype jarfile="C:\Program Files\Java\jdk1.8.0_45\jre\bin\java.exe" -jar "%1" %*

我试过,它对我有用。