为啥这个 javac: File Not Found 错误?
Posted
技术标签:
【中文标题】为啥这个 javac: File Not Found 错误?【英文标题】:Why this javac: File Not Found error?为什么这个 javac: File Not Found 错误? 【发布时间】:2011-08-31 19:17:38 【问题描述】:在 CentOS 5 linux 上使用一些基本的 java 应用程序,我将我的 classpath
设置为指向 home/pathToJava/bin
,其中包含 javac
和 java
我在home/pathToFolderA/src
中有.java
文件
和home/pathToFolderB/gen-java
当我在 home/pathToFolderA/src
中运行 javac
和 java
时,一切正常
但是当我在 home/pathToFolderB/gen-java
上运行 javac
fileName.java
时,我得到一个找不到文件的错误,特别是
javac: file Not found: fileName.java
Usage: javac <options> <source files>
为什么会发生这种情况?
感谢大家的帮助
【问题讨论】:
您如何在第二个目录中运行它 - 它是否存在/您是否具有读取权限等? 【参考方案1】:类路径用于查找 class 文件,而不是 source 文件。 (它也不用于查找 java
和 javac
二进制文件;它们可以在您的正常路径中找到。)您需要明确指定要编译的文件:
javac /home/pathToFolderA/src/fileName.java
显然,如果您已经在/home/pathToFolderA/src
,那么您可以使用fileName.java
,因为它被视为相对于您当前的目录。
【讨论】:
mmm 不知道 .... 如果我在 pathToFolderA/src 中并且我调用 javac fileName.java ..它应该可以工作...而且确实可以。当我在另一个文件夹中时它不起作用......问题是为什么? @algorithmicCoder:因为在另一个文件夹中,fileName.java
不存在。试试cat fileName.java
,我敢说也找不到文件。 类路径不用于查找源文件。
你是绝对正确的..fileName.java
在一个子目录下..绝对愚蠢的错误..我会看看 Liv 的答案如何正确指定我的路径和类路径。 ..谢谢!【参考方案2】:
您不应该将您的 classpath 设置为指向您的 JDK bin 目录——而应该是 PATH 环境变量,它与 classpath 的用途不同。 (类路径定义了一个包含已编译 Java .class 代码的 jar 和目录的列表;PATH 变量定义了一个路径列表,当在当前目录中找不到程序时,shell 需要在这些路径中查找和定位要执行的程序——所以如果你例如输入zip
——它将查看PATH
中定义的所有目录并找出zip
程序位于/usr/bin
下)
其次,如果你想从两个目录编译源代码,你需要指定:
home/pathToFolderA/src
和 home/pathToFolderB/gen-java
)
编译后生成.class文件的路径
在类路径中指定您可能在源文件中使用的任何库
总结起来就是这样编译:
javac -d /home/pathToFolderWithResultsOfCompilation -classpath /path/to/some.jar:/path/to/another.jar home/pathToFolderA/src/*.java home/pathToFolderB/gen-java/*.java
并运行已编译的程序:
java -classpath /path/to/some.jar:/path/to/another.jar:/home/pathToFolderWithResultsOfCompilation full.name.of.your.Java
【讨论】:
【参考方案3】:在 CentOS 5 linux 上使用一些基本的 Java 应用程序,我将我的
classpath
设置为指向home/pathToJava/bin
,其中包含javac
和java
这是错误的。类路径用于查找*.class
文件,而不是操作系统特定的可执行文件。 JDK 的bin
目录不属于类路径。请注意,类路径也不适用于查找*.java
源文件。
运行javac
时,如果源文件不在当前目录中,则需要指定源文件的路径。
【讨论】:
【参考方案4】:确保您的文件名不包含空格
例如:
HelloWorld.java
通常当您通过复制过去重命名文件时会出现错误,这会导致名称和点之间出现空格(这是错误:HelloWorld .java
)。
并确保您将目录更改为您的文件所在的同一文件夹
【讨论】:
我不敢相信所有这些挣扎都是由于文件名。我刚改名并繁荣!我的程序被编译了。谢谢。【参考方案5】:如果没有目录“gen-java”的列表以及您输入的确切命令,我的猜测是您正在尝试编译一个不存在的文件。 Linux 区分大小写,所以也许这就是你的问题。或者文件不存在。
【讨论】:
以上是关于为啥这个 javac: File Not Found 错误?的主要内容,如果未能解决你的问题,请参考以下文章
DevTools failed to load source map: Could not load content for…System error: net::ERR_FILE_NOT_FOUN
DevTools failed to load source map: Could not load content for…System error: net::ERR_FILE_NOT_FOUN
springboot整合mybatis 异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not foun
JDK环境配置: javac is not recognized as an internal or external command, operable program or batch file(
关于javac is not recognized as an internal or external command, operable program or batch file的解决方案