Java 从命令行编译

Java 从命令行编译,java,command-line,compilation,Java,Command Line,Compilation,我试图理解从命令行编译时选项-classpath是如何工作的 我从mydirectory的父目录尝试: javac-cp mydirectory/subdir Hello.java 但编译器说: javac:没有源文件 -cp(-classpath)是如何工作的??我做错了什么 如果我从subdir目录创建它: javac Hello.java 然后正确编译。必须直接定义要编译的文件 例如,如果您在父文件夹中: javac subdir/Hello.java 将需要编译 类路径允许查找编译上面

我试图理解从命令行编译时选项
-classpath
是如何工作的

我从
mydirectory
的父目录尝试:

javac-cp mydirectory/subdir Hello.java

但编译器说:

javac:没有源文件

-cp
-classpath
)是如何工作的??我做错了什么

如果我从
subdir
目录创建它:

javac Hello.java


然后正确编译。

必须直接定义要编译的文件

例如,如果您在父文件夹中:

javac subdir/Hello.java
将需要编译

类路径允许查找编译上面定义的内容所需的.class文件

例如,如果在代码中引用了类“Birds”,而该类位于当前文件夹中名为“anives.jar”的jar中,该文件夹是java文件所在位置的父文件夹,则需要:

javac -cp animals.jar subdir/Hello.java
可以使用通配符编译文件夹中的所有文件,如下所示:

javac *.java
javac @TestPrograms
如果需要同时编译大量文件,但不想使用通配符(可能需要编译大量文件,但不是文件夹中的所有文件),可以创建参数文件,其中列出要编译的文件。在参数文件中,可以使用空格或换行符分隔任意多个文件名。下面是一个名为TestPrograms的参数文件,其中列出了三个要编译的文件:

TestProgram1.java
TestProgram2.java
TestProgram3.java
您可以在javac命令行上使用@字符,后跟参数文件的名称来编译该文件中的所有程序,如下所示:

javac *.java
javac @TestPrograms
-cp和-classpath

指定查找用户类文件的位置。如果程序使用存储在单独文件夹中的类文件,请使用此选项

javac XXX.java
用于编译java类的命令,其中 -classpath标志可通过java命令使用

我们使用

java XXX.class
从main()函数开始,JVM应该知道类文件在哪里。 所以,为了指定类的路径,我们使用classpath标志

链接以获取更多详细信息

运行java程序的一些示例如下

java -classpath .;yourJarFile.jar your.MainClass

 java -classpath path_till_classfile/HelloWorld

它还取决于OP为
Hello.java
@EricJablow True声明的包。如果package语句没有反映文件的位置,则会导致编译错误。我建议制作命令窗口的屏幕截图,使用ls和pwd显示当前目录中的文件以及当前目录的值。关于你正在做的事情,有太多的事情我们必须假设或猜测,才能知道什么是错的。我们还需要知道Hello类的包,或者您没有的断言。