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

评论

javac CopyFile.java,然后是Java CopyFile

我现在处于命令行中,我是否需要将txt文件与要调用的程序保存在同一文件夹中?

CopyFile驻留在哪个包中

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

请参阅java,PATH和CLASSPATH以及此问题,从命令行运行Java程序。

#1 楼

来源:javaindos。


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

运行命令提示符

C:\> cd \mywork


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

C:\mywork> dir


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

这将运行编译器javac.exe。除了
下一个系统提示之外,您什么都看不到。

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


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

C:\mywork> javac filenamehere.java


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

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


评论


我遇到的问题是当我尝试运行编译器时出现错误“找不到或加载主类CopyFile

–伊丽莎白·特纳(Elizabeth Turner)
13年4月22日在0:42

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

–尼古拉斯·卡达约(Nicholas Kadaeux)
13年4月22日在0:48

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

– Android开发人员
16 Mar 3 '16 at 23:45

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

– Artur Czajka
16年11月6日,0:51

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

–片段
17年8月14日4:09



#2 楼

要完成答案:



Java文件

TheJavaFile.java



将Java文件编译为* .class文件

javac TheJavaFile.java



这将创建一个TheJavaFile.class文件



执行Java文件

java TheJavaFile



创建可执行文件*.jar文件



此处有两个选项-



带有外部清单文件:


创建清单文件说-MANIFEST.mf
MANIFEST文件不过是Main Class的显式条目
jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class



可通过入口点执行:


jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class







运行Jar文件

java -jar TheJavaFile.jar




评论


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

– Pini Cheyni
15年11月17日在18:06

@Pini Cheyni如果您的班级被称为MainClass,则清单文件将具有Main-Class的条目:MainClass

– jkhosla
2015年11月25日在3:26



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

–Dinesh Kumar P
16-9-27在5:39



在第3点上,当您调用与Java TheJavaFile.class ..等效的java TheJavaFile时,您将不会执行您声明的Java文件。您正在执行类文件。 Java文件是不可执行的源

–user2914191
19-2-3在13:35



#3 楼

如果您的Java类在某些程序包中。假设ABC.java中存在名为com.hello.programs的Java类,那么您需要使用包名称来运行它。
但是要运行它,您需要提供程序包名称,然后指定您的Java类名称:

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


#4 楼

编译Java文件以生成类:

javac filename.java


执行生成的类:

评论


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

–Doomjunky
17年8月24日在20:37

@Doomjunky您能解释一下吗?那是好是坏?是否应命名不同?

– David FerenczyRogožan
18-09-20在16:21

#5 楼

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

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

然后可以使用命令


javac A.java


编译文件。 >然后使用


java A



运行它,这就是在cmd中编译和运行Java程序的方式。
您还可以深入学习这些资料,这是Java的课程。对于初学者来说,这里涵盖了许多您需要用Java理解的东西。

#6 楼

假设文件名为“ CopyFile.java”,请执行以下操作:第一行将源代码编译为可执行字节代码。第二行执行它,首先将当前目录添加到类路径(以防万一)。

评论


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

–片段
17年8月13日在7:14

#7 楼

从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

#8 楼

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

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

#9 楼

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

快速方法


安装JDK http://www.oracle.com/technetwork/java/javase/在Windows中下载

,浏览到“ C:\ Program Files \ Java \ jdk1.8.0_91 \ bin”(或安装最新版本的JDK的位置),按住shift键并右键单击窗口中的空白区域,然后执行“此处打开命令窗口”,这将为您提供命令行并访问所有BIN工具。 Windows系统PATH环境变量中默认情况下“ javac”不是默认值。
遵循上面有关如何编译文件的注释(“ javac MyFile.java”然后“ java MyFile”)https://stackoverflow.com/a / 33149828/194872








安装JDK http://www.oracle.com/technetwork/java/javase/downloads/ index.html

安装后,在中编辑Windows PATH环境变量并将以下内容添加到路径C:\ ProgramData \ Oracle \ Java \ javapath。在此文件夹中有一些Java可执行文件的符号链接,但“ javac”不是其中的一个,因此,当尝试从Windows命令行运行“ javac”时,会引发错误。
我编辑了路径:控制面板- >系统->高级选项卡->“环境变量...”按钮->向下滚动到“路径”,突出显示并编辑->用直接路径替换“ C:\ ProgramData \ Oracle \ Java \ javapath” java BIN文件夹“ C:\ Program Files \ Java \ jdk1.8.0_91 \ bin”。
当升级JDK安装但现在可以访问所有命令行工具时,这可能会中断。
请按照上面有关如何编译文件的评论(“ javac MyFile.java”然后“ java MyFile”)https://stackoverflow.com/a/33149828/194872


#10 楼


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

     javac Student.java
     java Student




#11 楼

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

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

评论


此功能已在JDK 11中添加。

–霍尔格
19-09-27在13:04

#12 楼

从Java 9开始,JDK包含jshell(Java REPL)。

假设JDK 9+ bin目录已正确添加到您的路径中,您将可以简单地进行以下操作: >
运行jshell File.java —当然是File.java
将打开一个提示,允许您调用main方法:jshell> File.main(null)。 JShell可以在这里找到。