从不同的目录编译java文件

时间:2011-03-21 12:06:32

标签: java linux javac

我是JAVA的新手。我编写了简单的程序(在Linux -VIM编辑器中),编译并执行它,一切都很好。

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

有人能解释一下这是什么问题吗?

2 个答案:

答案 0 :(得分:1)

正确设置类路径和路径并检查其是否正常工作。

USAGE:
SET CLASSPATH=%<CLASSPATH>%
SET PATH=%<PATH_WHERE_JDKS_BIN_LOCATED>%

路径环境变量必须指向jdk安装中的bin目录...

USAGE:
Variable : JAVA_HOME
Value : C:\Program Files\Java\jdk1.5.0\bin;.
Variable: PATH
Value : C:\Program Files\Java\jdk1.5.0\lib

System Variables :
Variable : PATH (This will be there already)
Value : %JAVA_HOME%\bin;

由于文件不在当前目录中,请在提示符下面执行以下操作 $cd home/kiddosr/Kiddo/Java_Programs/ and press enter
home/kiddosr/Kiddo/Java_Programs at this point of time type javac Example1.java

答案 1 :(得分:1)

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

来自你的评论:

$ 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选项提供,或由{源路径中的{1}}环境变量或当前目录)和源文件(由CLASSPATH选项或类路径指定(如果未设置源路径))。如果对于所需的两者都存在且源文件较新,则也会重新编译它。 (它们也根据包结构进行搜索。)

    因此,在这种情况下,您应确保传递-sourcepath选项,以便编译器可以找到您的其他源文件。