我正在尝试从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是一次编写,随处运行)?


当前回答

您实际上可以像运行shell或python脚本一样运行Java程序,而无需手动编译Java文件,如中所述 中330。它从JDK 11开始提供。

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

    #!/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,没有shebang“#!”前缀,你仍然可以执行,就像这样:

    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检查。更多信息请见本博客。

其他回答

在Windows 7上,我必须执行以下操作:

快速的方法

Install JDK http://www.oracle.com/technetwork/java/javase/downloads in windows, browse into "C:\Program Files\Java\jdk1.8.0_91\bin" (or wherever the latest version of JDK is installed), hold down shift and right click on a blank area within the window and do "open command window here" and this will give you a command line and access to all the BIN tools. "javac" is not by default in the windows system PATH environment variable. Follow comments above about how to compile the file ("javac MyFile.java" then "java MyFile") https://stackoverflow.com/a/33149828/194872

漫长的道路

Install JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html After installing, in edits the Windows PATH environment variable and adds the following to the path C:\ProgramData\Oracle\Java\javapath. Within this folder are symbolic links to a handful of java executables but "javac" is NOT one of them so when trying to run "javac" from Windows command line it throws an error. I edited the path: Control Panel -> System -> Advanced tab -> "Environment Variables..." button -> scroll down to "Path", highlight and edit -> replaced the "C:\ProgramData\Oracle\Java\javapath" with a direct path to the java BIN folder "C:\Program Files\Java\jdk1.8.0_91\bin". This likely breaks when you upgrade your JDK installation but you have access to all the command line tools now. Follow comments above about how to compile the file ("javac MyFile.java" then "java MyFile") https://stackoverflow.com/a/33149828/194872

第一步:首先打开文件所在的命令提示符。(按住shift键右键点击) 步骤2:然后使用以下命令执行。 (假设要执行的文件和类名为Student.java)示例程序在图片背景中。

     javac Student.java
     java Student

完整回答:

The Java File TheJavaFile.java Compile the Java File to a *.class file javac TheJavaFile.java This will create a TheJavaFile.class file Execution of the Java File java TheJavaFile Creation of an executable *.jar file You've got two options here - With an external manifest file : Create the manifest file say - MANIFEST.mf The MANIFEST file is nothing but an explicit entry of the Main Class jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class Executable by Entry Point: jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class To run the Jar File java -jar TheJavaFile.jar

从Java 11开始,Java命令行工具已经能够直接运行单文件源代码。如。

java HelloWorld.java

这是JEP 330的一个增强:https://openjdk.java.net/jeps/330

有关使用和限制的详细信息,请参阅Java实现的手册,例如Oracle提供的手册:https://docs.oracle.com/en/java/javase/11/tools/java.html

您实际上可以像运行shell或python脚本一样运行Java程序,而无需手动编译Java文件,如中所述 中330。它从JDK 11开始提供。

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

    #!/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,没有shebang“#!”前缀,你仍然可以执行,就像这样:

    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检查。更多信息请见本博客。