如何在Windows命令行上运行Java程序?

258

我正在尝试在Windows命令行中执行一个Java程序。
这是我的代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyFile {
    public static void main(String[] args) {
        InputStream inStream = null;
        OutputStream outStream = null;

        try {
            File afile = new File("input.txt");
            File bfile = new File("inputCopy.txt");

            inStream = new FileInputStream(afile);
            outStream = new FileOutputStream(bfile);

            byte[] buffer = new byte[1024];

            int length;

            // copy the file content in bytes
            while ((length = inStream.read(buffer)) > 0) {
                outStream.write(buffer, 0, length);
            }

            inStream.close();
            outStream.close();

            System.out.println("File is copied successful!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我不确定如何执行这个程序 - 有什么帮助吗?
在Windows上是否可行?
为什么它与另一个环境不同(我以为JVM是一次编写,到处运行)?


40
使用命令javac CopyFile.java编译CopyFile.java文件,然后使用命令java CopyFile运行程序。 - Nir Alfasi
1
@Elizabeth Turner 首先,您必须确保已安装JRE(Java运行时环境),并且它可以从每个文件夹访问(Java / Javac的路径包含在PATH env变量中)。然后从CopyFile.java所在的同一文件夹中运行我上面写的命令。 - Nir Alfasi
@ARJUN,你的链接已经失效了。它似乎指向了一个垃圾邮件网站。 - Anders
请查看JEP 330以获取有关将Java程序运行为shell或Python脚本的更多信息。 - Anders
@elizabeth-turner,你不需要将文本文件放在Java程序的相同位置。但是,你应该使用main方法的参数来告诉它在哪里,然后将文件路径添加到命令行中。例如,dirlscopycp都可以使用。 - Anders
显示剩余6条评论
13个回答

2
现在(从JDK 9开始),您只需使用java即可执行它。为了执行包含主要内容的“Hello.java”,可以使用:java Hello.java。您不再需要单独使用javac进行编译。

此功能已添加在 JDK 11 中。 - Holger

2
自Java 9以来,JDK包括一个名为jshell的Java REPL。
假设JDK 9+的bin目录已正确添加到您的路径中,您只需执行以下操作:
  1. 运行jshell File.java ——其中File.java是您的文件。
  2. 将打开提示符,允许您调用main方法:jshell> File.main(null)
  3. 要关闭提示符并结束JVM会话,请使用/exit
完整的JShell文档可以在此处找到。

0

你实际上可以像运行shell或python脚本一样运行Java程序,而无需手动编译Java文件,如JEP 330中所述。该功能自JDK 11起可用。

如果您创建一个名为testing的文件,并将以下内容放入其中,则应能够将其作为命令testing运行。在Linux和Mac OSX中,您需要使用chmod +x testing将其设为可执行文件。

    #!/usr/bin/env java --source 11
    public class Test {
        public static void main(String [] args) {
            System.out.println("Hello world!");
            System.exit(0);
        }
    }

在之前的例子中,您不允许使用文件扩展名.java

    $ chmod +x testing
    $ ./testing
    Hello world!
    $

但是如果文件名为Test.java,没有以"#!"前缀开头,你仍然可以执行它:

    public class Test {
        public static void main(String [] args) {
            System.out.println("Hello again!");
            System.exit(0);
        }
    }

然后使用以下命令执行文件Test.java

    $ java Test.java
    Hello again!
    $

只要你的路径中有足够新的Java编译器,这个就可以工作了,可以用java -version检查。更多信息请查看博客


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接