239

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

4

13 回答 13

247

来源:javaindos。

假设您的文件位于 C:\mywork\

运行命令提示符

C:\> cd \mywork

这使得 C:\mywork 成为当前目录。

C:\mywork> dir

这将显示目录内容。您应该在文件中看到 filenamehere.java。

C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin

这告诉系统在哪里可以找到 JDK 程序。

C:\mywork> javac filenamehere.java

这将运行编译器 javac.exe。您应该只看到下一个系统提示...

C:\mywork> dir

javac 创建了 filenamehere.class 文件。您应该在文件中看到 filenamehere.java 和 filenamehere.class。

C:\mywork> java filenamehere

这将运行 Java 解释器。然后你应该看到你的程序输出。

如果系统找不到 javac,请检查 set path 命令。如果 javac 运行但出现错误,请检查 Java 文本。如果程序编译但出现异常,请检查文件名和类名中的拼写和大小写以及 java HelloWorld 命令。Java区分大小写!

于 2013-04-22T00:31:01.903 回答
115

要完成答案:

  1. Java 文件

    TheJavaFile.java
    
  2. 将 Java 文件编译为 *.class 文件

    javac TheJavaFile.java
    
    • 这将创建一个TheJavaFile.class文件
  3. Java 文件的执行

    java TheJavaFile
    
  4. 创建可执行*.jar文件

    • 你有两个选择 -

      1. 使用外部清单文件:

        • 创建清单文件说 - MANIFEST.mf

        • MANIFEST 文件不过是主类的显式条目

        • jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class

      2. 可由入口点执行:

        • jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
  5. 运行 Jar 文件

    java -jar TheJavaFile.jar
    
于 2015-10-15T13:26:20.030 回答
23

如果您的 Java 类在某个包中。假设您的 Java 类ABC.java存在于 中com.hello.programs,那么您需要使用包名运行它。

用通常的方式编译它:

C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java

但是要运行它,您需要给出包名,然后是您的 java 类名:

C:\SimpleJavaProject\src > java com.hello.programs.ABC
于 2016-07-28T14:15:16.157 回答
22

编译一个 Java 文件以生成一个类:

javac filename.java

执行生成的类:

java filename
于 2014-04-11T12:14:30.627 回答
17

从 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

于 2019-05-29T14:10:40.100 回答
11

假设文件名为“CopyFile.java”,请执行以下操作:

javac CopyFile.java
java -cp . CopyFile

第一行将源代码编译成可执行的字节码。第二行执行它,首先将当前目录添加到类路径中(以防万一)。

于 2017-01-31T21:03:29.780 回答
9

这很容易。如果您已将文件保存为 A.text,您首先应该将其保存为 A.java。现在它是一个 Java 文件。

现在您需要在编译之前打开 cmd 并设置 A.java 文件的路径。你可以参考这个

然后你可以使用命令编译你的文件

javac A.java

然后使用

爪哇

这就是您在 cmd 中编译和运行 java 程序的方式。您还可以通过这些材料深入学习 Java 课程。那里为初学者介绍了许多您需要了解的 Java 内容。

于 2016-04-03T11:48:20.450 回答
7

您可以在命令行中使用 javac 编译任何 java 源代码;例如,javac CopyFile.java。运行:java CopyFile。您还可以使用 javac *.java 编译所有 java 文件,只要它们位于同一目录中

如果您遇到“无法找到或加载主类”的问题,您的路径中可能没有 jre。看看这个问题: 找不到或加载主类

于 2013-04-22T00:32:58.910 回答
4

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

快捷方式

  1. 安装JDK http://www.oracle.com/technetwork/java/javase/downloads
  2. 在 Windows 中,浏览到“C:\Program Files\Java\jdk1.8.0_91\bin”(或安装最新版本 JDK 的地方),按住 shift 并右键单击窗口中的空白区域并执行“打开命令窗口在这里”,这将为您提供命令行并访问所有 BIN 工具。默认情况下,“javac”不在 Windows 系统 PATH 环境变量中。
  3. 按照上面关于如何编译文件的评论(“javac MyFile.java”然后是“java MyFile”)https://stackoverflow.com/a/33149828/194872

很长的路要走

  1. 安装JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. 安装后,编辑 Windows PATH 环境变量并将以下内容添加到路径 C:\ProgramData\Oracle\Java\javapath。在这个文件夹中是指向少数 java 可执行文件的符号链接,但“javac”不是其中之一,因此当尝试从 Windows 命令行运行“javac”时会引发错误。
  3. 我编辑了路径:控制面板->系统->高级选项卡->“环境变量...”按钮->向下滚动到“路径”,突出显示并编辑->替换了“C:\ProgramData\Oracle\Java\ javapath”,带有指向 java BIN 文件夹“C:\Program Files\Java\jdk1.8.0_91\bin”的直接路径。
  4. 当您升级 JDK 安装但您现在可以访问所有命令行工具时,这可能会中断。

  5. 按照上面关于如何编译文件的评论(“javac MyFile.java”然后是“java MyFile”)https://stackoverflow.com/a/33149828/194872

于 2016-06-28T23:49:54.370 回答
3

在此处输入图像描述 第 1 步:首先打开文件所在的命令提示符。(在按住 shift 的同时单击鼠标右键)
第 2 步:然后使用以下命令执行。(假设要执行的文件和类名为Student.java)示例程序在图片背景中。

     javac Student.java
     java Student

在此处输入图像描述

于 2017-05-12T04:08:36.657 回答
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 的完整文档。

于 2019-01-27T08:05:00.077 回答
2

现在(从 JDK 9 开始),您可以使用 java 来执行它。为了执行包含main的“Hello.java”,可以使用:java Hello.java

您不再需要使用 javac 单独编译。

于 2019-04-11T10:21:45.280 回答
0

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

如果您创建一个文件testing,并输入以下内容,您应该能够将其作为命令运行testing。您需要使用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没有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. 此博客中的更多信息。

于 2022-01-26T17:05:14.003 回答