Java jar中的System.out.println

Java jar中的System.out.println,java,class,command-line,jar,Java,Class,Command Line,Jar,我有一个java程序,我想把它打包在一个jar中。 它可以很好地编译,并且可以毫无错误地编译到jar中。但当我双击它时,它不会启动。我知道大多数jar应用程序都使用JFrame,这很好用。但是是否可以使其基于命令提示符/shell?(如显示系统.out.println) 示例:双击jar是否可以执行此代码: public class Hello { public static void main( String[] args ) { System.out.println( "H

我有一个java程序,我想把它打包在一个jar中。 它可以很好地编译,并且可以毫无错误地编译到jar中。但当我双击它时,它不会启动。我知道大多数jar应用程序都使用JFrame,这很好用。但是是否可以使其基于命令提示符/shell?(如显示系统.out.println)

示例:双击jar是否可以执行此代码:

public class Hello
{

  public static void main( String[] args )
  {
    System.out.println( "Hello, World!" );
  }
}

您可以通过包含一个清单文件使jar成为可执行文件,该清单文件包含拥有主方法的类的名称(在您的示例中是Hello)。是一个详细说明您需要做什么的链接。

这样做没有问题。但是,您希望在哪里看到输出

如果您从控制台执行java-jar my jar.jar,您将看到您的“Hello,World”


如果要双击,需要创建JFrame。

当然。首先尝试按以下方式运行程序:

java-cp yourjar.jar Main

其中Main是主类的完全限定类名

当这项工作正常时,如果您信任Excutable jar,请尝试按以下方式运行您的程序:

java-jar yourjar.jar


当这项工作正常时,双击也应该工作,除非您将扩展名
jar
映射到安装JRE时默认完成的
javaw
以外的程序。

如果您想显示“Hello,world!”字符串,您必须从命令行执行代码:

   jar -jar your_jar_name.jar

您可以更改jar文件的文件关联,让它们打开控制台。 (这是针对Windows的)

  • 开放式命令处理器
  • 键入
    ftype jarfile
  • 您将得到如下结果:
jarfile=“C:\Path\To\Java\bin\javaw.exe”-jar“%1%*”

  • 输入
    ftype jarfile“C:\Path\To\Java\bin\Java.exe”-jar“%1”%*
    (您可能需要管理员权限才能执行此操作)

我没有看到任何人提到明显的解决方案:制作一个.cmd(或.bat)文件,其中包含每个人都在谈论的命令--
java-jar YourJar.jar
。您可以双击.cmd文件,将打开一个控制台窗口。它还将在程序退出时立即关闭,因此程序应在退出前等待按键。

输出被转发到控制台,但如果没有eclipse,则没有任何输出!解决这个问题的唯一方法是在命令提示符下启动程序,然后您将获得程序的输出。

我假设您已经正确设置了清单,并且在命令行上运行了
jar-jar myjar.jar
?我只是使用eclipse导出了jar,而该命令无法工作。这就是jar:是的,当您双击它时,代码就会执行。但是你看不到它,因为它不在终点站。尝试
java-jarbros.jar
,尽管我不确定Peter的命令为什么不起作用。这实际上回答了我的问题。谢谢:DSee也知道否决票是怎么回事。问题是“是否可以通过双击一个jar来执行此代码”,这就是我的答案所说的。请添加一条注释,说明为什么进行否决投票。@Raam否,问题是如何从可执行jar文件获取
System.out.println
。OP通过Eclipse制作了他的jar,它为他处理清单。虽然这些信息在技术上是正确的,但它并没有回答这个问题。@Jeffrey,关于eclipse的信息是在一条评论中给出的,而且双击它可以在eclipse之外打开jar。这就是我的答案。无论如何,如果一条证明否决权的评论是强制性的,那就好了。@Raam你不能在Eclipse中打开jar文件,所以我不知道你想说什么。Eclipse假定用户希望在其外部执行jar文件,并自动创建适当的清单。(我为我的否决票辩护,考虑到问题的上下文,我觉得这个答案没有用。)@Jeffrey——我说“jar是在eclipse之外打开的”的意思是,用户可以自由地直接更改jar,而无需使用任何IDE。正如我所提到的,当我回答这个问题时,eclipse信息并不是问题的一部分。在这种情况下,我觉得质疑答案的评论更好,但那是我。不过我明白你的意思,“如果你想双击,你需要创建一个JFrame”,这正是我想要的for@Dallox如果你想双击,你不必创建一个
JFrame
,看看我的答案。这很有道理,这就是为什么我给你一个声誉点,但是我不想让用户改变电脑的配置来运行程序。