Java 双击JAR文件不会打开命令提示符
我想双击一个Jar文件来运行它 下面是其中唯一的Java类文件Java 双击JAR文件不会打开命令提示符,java,jar,executable-jar,Java,Jar,Executable Jar,我想双击一个Jar文件来运行它 下面是其中唯一的Java类文件 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Sysout{ public static void main(String[] args) throws IOException{ System.out.println("Hello World!"); B
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Sysout{
public static void main(String[] args) throws IOException{
System.out.println("Hello World!");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String msg = br.readLine();
System.out.println(msg);
br.read();
}
}
并且清单文件定义了主类
使用link,我通过双击批处理文件成功地运行了Jar文件。
这将打开命令提示符并运行定义的主类
但是,如果我直接双击Jar文件,什么也不会发生。
我还检查了链接并将我的.jar关联到javaw.exe
林克也提出了同样的建议。
还尝试将.jar与java.exe关联
发生的情况是,命令提示符打开几秒钟后消失
即使我希望用户输入一些数据,双击操作也不会等待用户输入任何内容
问题出在哪里?可能是您的.jar文件已与任何其他默认程序绑定,右键单击并用“Java(TM)Platform SE binary”打开。如果有一个可执行的jar文件,这应该可以工作。当您使用
javaw
关联时,它不会创建命令窗口,并且会吞噬所有System.out
和System.err
调用
您应该将.jar
文件与java
二进制文件重新关联,该二进制文件应该显示必需的命令窗口
如果您使用了简单的openwith…
选项,它将从命令行中省略-jar
选项
打开管理员命令窗口(如果您使用的是启用UAC的Vista或Windows 7,则需要此窗口),然后执行以下操作:
在您的情况下,应该将C:\ProgramFiles\Java\jre7\bin\Java.exe路径替换为用于安装jre的路径
当您在下面双击时,它应该会正确运行
您可以添加另一个ftype:
ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
再次用系统的路径替换javaw二进制文件的路径
您现在应该能够通过交替选择assoc.jar=jarfileterm
和assoc.jar=jarfile
在窗口和非窗口之间切换
如果您想在运行.jar之后保持命令窗口,那么可以使用cmd/s/k
viz围绕java命令的调用:
ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm
如果这些命令有效,那么双击jar文件将导致弹出一个命令窗口并保持
您不能使用openwith…
或使用允许jar文件运行的默认程序来设置足够复杂的命令行。如果您已经成功地尝试了所有这些操作ftype
和assoc
命令,但仍然不起作用,那么您需要剥离注册表编辑器
启动regedit
,并在HKEY_CLASSES\u ROOT
下搜索名为.jar的键-这将在其下生成一个名为(默认值)
的值,如果ftype命令调用有效,则应读取jarfileterm
。如果它不起作用,那么您将看到一个可能由另一个应用程序创建的关联(我不知道java更新程序是否替换了这些条目,但如果替换了,那么这可能就是问题所在)
接下来,您需要在HKEY\U CLASSES\U ROOT
中查找此键。它将找到此条目,其中应包含一个键Shell
(即展开文件夹jarfileterm
,并应显示另一个文件夹Shell
),其中包含一个键Open
,其中包含一个键命令
,其中包含一个(默认值)
值,该值应包含启动.jar文件的调用命令。此命令应与您最后键入的ftype jarfileterm=…
项匹配。如果不匹配,则应使其与cmd/s/k
或“c:\program files\java\jre7\bin\java.exe”选项之一匹配(取决于您是否希望在启动时出错时保持命令窗口)我正在使用JDK在Windows 10中打开jar
文件
打开regedit→ HKEY\U CLASSES\U ROOT\jarfile\shell\open\command
将默认值从javaw
更改为java
例如,我的是“C:\Program Files\Java\jdk-14.0.1\bin\Java.exe”“-jar”“%1”
,当您将.jar与javaw关联时,它故意不显示命令窗口!!将其与java关联,您应该会看到window@Petesh你能把这句话作为回答吗?我相信你会得到回报的。我确实与java.exe有关联。但是,该窗口仅显示了几分之一秒。请将更新后的POSI关联jar引用到jre/bin中的java.exe。但是,这确实会打开命令提示符一秒钟,然后消失。我期待使用BufferedReader的用户输入。因此,它应该等待一些用户输入,然后像那样消失。如果您使用简单的“openwith…”选项,那么-jar选项将丢失,从而导致您遇到的问题。我将使用一组选项更新答案,这些选项可从命令行用于配置此属性库以更新答案。我同时遵循了解决方案设置jarfileterm和jarfile。将.jar关联到jarfileterm。但是,此解决方案不起作用:(同样的问题仍然存在。命令提示符仅显示一小部分秒。当您将调用jarfileterm操作的等效内容复制到终端窗口中时:“c:\program files\java\jre7\bin\java.exe”-jar“c:\users\my account\documents\myjar.jar”
它是否正确运行?请执行以下操作:ftype jarfileterm=cmd/s/k“C:\Program Files\Java\jre7\bin\Java.exe”-jar“%1”%*“
然后双击jar文件-如果调用有任何错误,它们将保留在终端窗口中
ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm