我想通过双击运行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!");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String msg = br.readLine();
System.out.println(msg);
br.read();
}
}
并且Manifest文件已定义Main-Class。
使用this链接,我通过双击批处理文件成功运行了Jar文件。 这将打开命令提示符并运行定义的主类。
但是,如果我直接双击Jar文件,则没有任何反应。 我还检查了this链接并将我的.jar与javaw.exe相关联 This链接也提示相同。 还尝试将.jar与java.exe相关联
命令提示符会在几分之一秒后打开并消失。
即使我希望用户输入一些数据,双击操作也不会等待用户输入任何内容。
问题出在哪里?
答案 0 :(得分:13)
当您使用javaw
关联时,它不会创建命令窗口,并且会吞下所有System.out
和System.err
次调用。
您应该将.jar
文件与java
二进制文件重新关联,该二进制文件应显示必需的命令窗口。
如果您使用简单的Open With...
选项,它将从命令行中省略-jar
选项。
打开管理员命令窗口(如果您使用的是启用了UAC的Vista或Windows 7,则需要此窗口)并执行以下操作:
assoc .jar=jarfileterm
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*
在您的情况下,您应该将C:\Program Files\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文件将导致命令窗口弹出并保持不变。
您无法使用Open With...
或使用允许运行jar文件的Default Programs
设置足够复杂的命令行。如果您已成功尝试了所有这些工作ftype
和assoc
命令,但它仍然不起作用,那么您将需要剥离注册表编辑器。
启动regedit
,并在HKEY_CLASSES_ROOT
下搜索名为.jar的密钥 - 如果您的ftype命令调用有效,则应在其下方生成一个名为(Default)
的值,其值为jarfileterm
,那么它应该是HKEY_CLASSES_ROOT
。如果它不起作用,那么你正在查看一个可能由另一个应用程序创建的关联(我不知道java updater是否替换了这些条目,但如果有,那么这可能是问题)< / p>
您需要在Shell
中查找此密钥。它会找到此条目,其中应包含一个键jarfileterm
(即展开文件夹Shell
,它应显示另一个文件夹Open
),其中包含一个键Command
包含一个键(Default)
,其中包含一个ftype jarfileterm=...
值,该值应包含用于启动.jar文件的调用命令。此命令应与您键入的最后cmd /s /k
条目匹配。如果没有,则应使其与{{1}}或“c:\ program files \ java \ jre7 \ bin \中的一个匹配java.exe“选项(取决于是否要在启动时出现错误时保留命令窗口)
答案 1 :(得分:1)
可能是您的.jar文件已与任何其他默认程序绑定,右键单击并使用“Java(TM)Platform SE binary”打开。如果有可执行的jar文件,这应该有效。
答案 2 :(得分:0)
我正在使用JDK在Windows 10中打开jar
文件。
javaw
更改为java
例如,我的是"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-jar" "%1"