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


216

我正在尝试从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只写一次,可以在任何地方运行)?


33
javac CopyFile.java然后java CopyFile
alfasin

我现在在命令行中,是否需要将txt文件与程序保存在同一文件夹中以进行调用?
伊丽莎白·特纳

CopyFile驻留了什么程序包
MadProgrammer

1
@Elizabeth Turner首先,您必须确保已安装JRE(Java运行时环境),并且可以从每个文件夹访问它(路径env变量中包含Java / Javac的路径)。然后从CopyFile.java所在的同一文件夹运行我上面编写的命令。
alfasin

Answers:


240

资料来源: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已创建filenamename.class文件。您应该在文件中看到filenamehere.java和filenamehere.class。

C:\mywork> java filenamehere

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

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


27
我遇到的问题是,当我尝试运行编译器时,出现错误“找不到或加载主类CopyFile
伊丽莎白·特纳

2
如果您将包含CopyFile.class的文件夹设置为当前目录,只需尝试“ java
-cp。CopyFile

我将如何创建一个可编译并运行代码的批处理文件,但如果以前已编译过,则只需启动它即可?
Android开发者

2
缺少的是:如果该类声明为在某个程序包中,则必须将.class文件放入适当的目录结构中。当前目录是默认的类路径,因此您不必-cp .手动设置。
Artur Czajka,2016年

2
当然,您应该使用软件包:package mypackage; 然后转到您的项目名称/。运行java mypackage.Main
chrips

108

要完成答案:

  1. Java文件

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

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

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

    • 您在这里有两个选择-

      1. 使用外部清单文件:

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

        • MANIFEST文件不过是Main Class的显式条目

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

      2. 可通过入口点执行:

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

    java -jar TheJavaFile.jar

5
您能显示MANIFEST.mf的内容吗,因为当我尝试“按入口点可执行”时,它说找不到主类
Pini Cheyni 2015年

@Pini Cheyni如果您的班级被称为MainClass,则清单文件中将包含Main-Class的条目:MainClass
jkhosla 2015年

@PiniCheyni,这里很好地解释了创建可执行jar的2种方法。docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Dinesh Kumar P

在第3点上,当您调用java TheJavaFile相当于java TheJavaFile.class..的内容时,您将不会执行您所说的Java文件。您正在执行类文件。Java文件是不可执行的源
user2914191

21

如果您的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

19

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

javac filename.java

执行生成的类:

java filename

请注意,您的“文件名”实际上是类的名称。java.exe将在每个* .jar文件中搜索该名称的类。
Doomjunky

@Doomjunky您能解释一下吗?那是好还是坏?是否应命名不同?
David FerenczyRogožan18年

9

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

现在,您需要打开cmd并设置A.java文件的路径,然后再进行编译。您可以为此参考。

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

javac A.java

然后使用运行

Java A

这样便可以在cmd中编译和运行Java程序。您还可以深入学习Java 这些材料。对于初学者来说,您需要了解许多Java知识。


7

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

如果由于“找不到或加载主类”而导致问题,则路径中可能没有jre。看一下这个问题: 找不到或加载主类


7

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

javac CopyFile.java
java -cp . CopyFile

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


3
mycomputer:bin user $ java -cp。Main.class错误:无法找到或加载主类Main.class
chrips


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工具。Windows系统PATH环境变量中默认情况下不是“ javac”。
  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


2

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

     javac Student.java
     java Student

在此处输入图片说明


1

从Java 9开始,JDK包括jshellJava REPL。

假设JDK 9+ bin目录已正确添加到您的路径中,您将能够简单地执行以下操作:

  1. 运行jshell File.java- File.java当然是您的文件。
  2. 将打开一个提示,允许您调用main方法:jshell> File.main(null)
  3. 要关闭提示并结束JVM会话,请使用 /exit

可以在这里找到JShell的完整文档。


1

现在(从JDK 9开始),您只需使用java即可执行该操作。为了执行包含主体的“ Hello.java”,可以使用:java Hello.java

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


此功能已在JDK 11.增加了
霍尔格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.