java - 从不同的目录编译java文件

标签 java linux javac

我对 JAVA 很陌生。我已经编写了简单的程序(在 Linux -VIM 编辑器中),编译并执行它,一切都很好。

现在,我将该文件移动到另一个目录并尝试编译 (javac Myfile.java) 它,但它会抛出一条错误消息,如 javac-not found

谁能解释一下这是什么问题?

最佳答案

您最初的问题并不完全清楚(因为它不包含完整的错误消息)。

来自您的评论:

$ javac Example1.java
javac: file not found: Example1.java
Usage: javac <options> <source files> use -help for a list of possible options

因此,javac 没有找到您的文件示例 java。

通常,您不必设置 CLASSPATH(在 bash 中使用 export CLASSPATH=),javac 会在当前目录中搜索源代码。是你的Example1.java在当前目录? (输入 ls 并查看输出。)

如果没有,您应该将此文件的路径作为参数提供给 javac ... 但它确实更好,所以只需使用 cd 移动到正确的目录即可。 .

如果您正在使用包,请将您的 shell 定位到包目录层次结构顶部的目录,并从那里使用相关文件名调用编译器。


编辑,因为我看到接下来的问题:

  • 编译器会将生成的类文件放入由 -d 给出的输出目录树中参数(或当前目录,如果未给出),由它们的包结构决定,因此请确保稍后(在调用程序时)在那里搜索它们。
  • 如果编译器需要其他类来编译命令行中指示的文件,它会在类路径中搜索类文件(由 -classpath-cp 选项提供,或由 CLASSPATH 环境变量提供,或当前目录)和源路径中的源文件(由 -sourcepath 选项给出,如果未设置源路径,则为类路径)。如果需要的两者都存在并且源文件更新,它也会被重新编译。 (它们也是根据包结构搜索的。)

    所以在这种情况下,您应该确保通过 -sourcepath选项,以便编译器可以找到您的其他源文件。

关于java - 从不同的目录编译java文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377344/

相关文章:

Java环境变量设置

java - 从 jTDS JDBC 驱动程序迁移到 Microsoft JDBC

java - 实现库中定义的接口(interface)

java - AWS S3 tomcat 8 上的设备上没有剩余空间

c - 模拟硬件中断

linux - Perl 不返回 PID

java - 在 Java 和 C# 中使用 POSIX 删除所有标点符号会产生不同的输出

python - 如何将多值 CSV 转换为 Json

gradle - Gradle-为特定项目设置特定的JAVA_HOME

java - 从另一个 Java 程序编译并运行一个 Java 程序