2011-05-24 461 views
2

一些基本的Java应用程序在CentOS工作5 linux和我有我的classpath设置为指向home/pathToJava/bin包含javacjava为什么这个javac:File Not Found错误?

和我有home/pathToFolderA/src

home/pathToFolderB/gen-java

当我.java文件运行javacjavahome/pathToFolderA/src一切正常完美

但是当我从运行在home/pathToFolderB/gen-javafileName.javajavac得到错误未找到文件,具体

javac: file Not found: fileName.java 
Usage: javac <options> <source files> 

为什么会这样发生?

感谢所有帮助

+0

改变了目录到同一文件夹文件你是如何在第二个目录中运行它 - 它存在那里/你已经阅读权限等? – Mikaveli 2011-05-24 09:53:20

回答

5

你不应该设置你的classpath 指向你的JDK的bin目录 - 相反,它应该是PATH环境变量,它用于不同目的的类路径。 (类路径定义了一个包含编译Java的jar和目录列表。班级代码; PATH变量定义了当shell在当前目录中找不到时所需执行的程序执行的路径列表 - 因此,如果您键入例如zip,它将查找PATH中定义的所有目录,以及弄清楚,zip程序位于/usr/bin下) 其次,如果你想编译从两个目录源,需要指定:

  • 所有地方的源路径(包括home/pathToFolderA/srchome/pathToFolderB/gen-java
  • 路径其中编译的.class文件将生成
  • 在classpath中指定你可能在你的源使用任何库文件

概括起来,它会是这样的编译:

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 
6

类路径是用来寻找文件,而不是文件。 (也不是用来寻找javajavac二进制文件;那些在你的正常路径中找到。)你需要指定文件明确编译:如果你已经在/home/pathToFolderA/src那么显然

javac /home/pathToFolderA/src/fileName.java 

您可以使用fileName.java,因为这被视为相对于您当前的目录。

+0

mmm不知道....如果我在pathToFolderA/src,我打电话给javac文件名.java ..它应该工作...并且它。这是当我在另一个文件夹中,它不工作...问题是为什么? – algorithmicCoder 2011-05-24 09:55:05

+1

@algorithmicCoder:因为在其他文件夹中,'fileName.java'不存在。试试'cat fileName.java',我敢说也找不到这个文件。 **类路径不用于查找源文件** – 2011-05-24 09:55:49

+0

你是绝对正确的..'fileName.java'在一个子目录下....绝对愚蠢的错误..我要看Liv的答案如何正确指定我的路径和类路径...谢谢! – algorithmicCoder 2011-05-24 10:06:53

3

一些基本的Java应用程序在CentOS 5 Linux上工作,我有我的classpath设置为指向home/pathToJava/bin包含javacjava

这是不对的。类路径用于查找*.class文件,而不是操作系统特定的可执行文件。 JDK的bin目录不属于类路径。请注意,类路径也不适用于查找*.java源文件。

当您运行javac时,如果源文件不在当前目录中,则需要指定源文件的路径。

0

没有目录“gen-java”的列表和你输入的确切命令,我的猜测是你试图编译一个不存在的文件。 Linux区分大小写,所以也许这就是你的问题。或者该文件不存在。

1

确保您的文件名包含空格

如:

HelloWorld.java 

当您通过副本重命名文件过去,这将导致名称和点之间的空间(:HelloWorld .java这是错误的),通常发生的错误。

,并确保你在

+0

我无法相信这一切都是由于文件名。我刚刚重新命名和繁荣!我的程序被编译。谢谢。 – 2017-10-13 12:54:47

相关问题