繁体   English   中英

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

[英]Run JAVA 8 jar on windows without command prompt

这是一个简单的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”。 在此输入图像描述

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

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

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

在此输入图像描述

注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文件。 我怎么解决呢?

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

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

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

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

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

最优雅的解决方案,但需要更多后台工作的解决方案,是在JScrollPane中实例化一个由JFrameJTextArea组成的简单GUI,然后将输出附加到文本区域。

您的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" %*

我试过,它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM