一般来说,编译器期望的源文件,并根据包结构输出类文件。
如果您没有提供任何-sourcepath
(或-classpath
,如果没有给出源路径)选项,则相对于当前目录搜索源文件。如果给出了一个源路径,则相对于该路径搜索源文件(除了在命令行上直接指定的任何文件外)。
同样,如果您没有指定任何-d
选项,则类文件将根据相对于当前目录的包结构放入目录中。如果您给出-d
选项,则类文件将相对于该选项给出的目录进行放置。这里将创建不存在的目录。因此,如果您想在源文件所在的目录树中创建输出,通常的做法是更改为此树的根(在您的案例中为C:\
),然后从那里调用javac:
javac -classpath ... -sourcepath . APPC_LU62\Runtime\*.java
(或仅列出您实际想要编译的java文件)。或者,你可以添加-d C:\
和-sourcepath C:\
选项,然后调用从徘徊无论你想要的命令:
javac -classpath ... -sourcepath C:\ -d C:\ C:\APPC_LU62\Runtime\*.java
同样是有效后来换用java
命令执行类:这还预计,根据目录中的类到包结构,其中根是类路径中提到的目录或jar文件。因此,您必须将C:\
添加到-classpath
,以便为您的java
呼叫。 (顺便说一下,我不会使用某个驱动器的根作为程序包层次结构的根目录 - 更好地将所有目录下移一个目录。)
嗨,马特,谢谢你接受答案的“单挑”......我从来不知道这个复选标记是什么......我不是很善于理解符号......我工作得更好用词。但这里是我的选择文件的内容,我传递给Java编译器: -g -verbose -deprecation -implicit:类 -classpath C:\ JVM \ ibm_sdk60 \; C:\ JVM \ CS_SNA_API_Client \; C: \ JVM \ CS_SNA_API_Client \ CPICJAVA.JAR; C:\ JVM \ CS_SNA_API_Client \ CPICJAVA.DLL -sourcepath C:\ APPC_LU62 \ Runsrc – 2011-05-07 13:04:11
我想知道是否有办法阻止编译器创建一个新的目录结构每次运行编译器。如何“告诉”编译器使用我现有的目录结构。谢谢 – 2011-05-07 13:06:21
@Guy:另一个提示:添加这样的评论问题,那里有一个编辑链接。 – 2011-05-08 01:43:12