这是一个简单的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文件。 我该如何解决?
答案 0 :(得分:4)
如果您双击*.jar
,它实际上是以javaw -jar Hello.jar
开头的。 java.exe
和javaw.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" %*
我试过,它对我有用。