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

Eli*_*ner 211 java

我正在尝试从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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何执行该程序 - 任何帮助?这可能在Windows上吗?为什么它与另一个环境不同(我认为JVM只写一次,在任何地方运行)?

Nic*_*eux 234

资料来源:javaindos.

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

运行命令提示符

C:\> cd \mywork
Run Code Online (Sandbox Code Playgroud)

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

C:\mywork> dir
Run Code Online (Sandbox Code Playgroud)

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

C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin
Run Code Online (Sandbox Code Playgroud)

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

C:\mywork> javac filenamehere.java
Run Code Online (Sandbox Code Playgroud)

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

C:\mywork> dir
Run Code Online (Sandbox Code Playgroud)

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

C:\mywork> java filenamehere
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我遇到的问题是,当我尝试运行编译器时,我收到错误"无法找到或加载主类CopyFile (25认同)
  • 如果您将包含CopyFile.class的文件夹设置为当前目录,只需尝试“ java -cp。CopyFile”,否则尝试“ java -cp FULLPATH CopyFile” (2认同)
  • 缺少什么:如果声明类在某个包中,那么你必须将`.class`文件放在适当的目录结构中.当前目录是默认的类路径,因此您不必手动设置`-cp .`. (2认同)
  • 当然,你应该使用一个包:package mypackage; 然后转到你的projectname /.运行java mypackage.Main (2认同)
  • @ElizabethTurner,我遇到了同样的错误,这是因为我打开了祖父母文件夹,并且在代码开头使用了带有本地包的项目。结果:我的工作目录中有多个项目。如果您在代码文件的第一行中使用 **package [projectfoldername];**,则必须使用 **java [projectfoldername]\xyz.java** “项目文件夹之外”,并使用包的文件夹结构之后你还负责上课。参见例如/sf/ask/646414191/ (2认同)

jkh*_*sla 106

要完成答案:

  1. Java文件

    TheJavaFile.java
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将Java文件编译为*.class文件

    javac TheJavaFile.java
    
    Run Code Online (Sandbox Code Playgroud)
    • 这将创建一个TheJavaFile.class文件
  3. 执行Java文件

    java TheJavaFile
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

  • 能否请你显示MANIFEST.mf的内容,因为当我尝试"按入口点执行"时,它说主要类无法找到 (5认同)

Har*_*kar 21

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

以通常的方式编译它:

C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java
Run Code Online (Sandbox Code Playgroud)

但要运行它,您需要提供包名称,然后提供您的java类名称:

C:\SimpleJavaProject\src > java com.hello.programs.ABC
Run Code Online (Sandbox Code Playgroud)


Par*_*227 18

压缩 Java文件以生成类:

javac filename.java
Run Code Online (Sandbox Code Playgroud)

执行生成的类:

java filename
Run Code Online (Sandbox Code Playgroud)


aka*_*guc 12

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

java HelloWorld.java
Run Code Online (Sandbox Code Playgroud)

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

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


小智 9

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

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

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

javac A.java

然后使用它运行它

java A.

这就是你在cmd中编译和运行java程序的方法.您还可以浏览这些深入课程中的Java 材料.初学者需要了解Java中需要了解的许多内容.


mon*_*ika 7

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

如果您遇到"无法找到或加载主要课程"的问题,那么您的路径中可能没有jre.看看这个问题: 无法找到或加载主类


Yak*_*ovK 7

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

javac CopyFile.java
java -cp . CopyFile
Run Code Online (Sandbox Code Playgroud)

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

  • mycomputer:bin user $ java -cp.Main.class错误:无法找到或加载主类Main.class (2认同)