[英]Compiling java program with cp switch - unexpected behavior
使用javac的-cp开关时,我无法理解某些行为。 我在Windows 7计算机的目录C:\\ A \\ B \\ C>中有两个Java文件。 文件是Extend.java和TestExtend.java; 两者都属于软件包“ package com.gonni.profile”。 我收到以下错误:
C:\A\B>javac -d . -cp C\Extend.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
C:\A\B>javac -d . -cp 39#$%$fe#%#$%FF#$%GWE C\Extend.java
C:\A\B>javac -d . -cp C\TestExtend.java
javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options
C:\A\B>javac -d . -cp 3458$^$%$%BF#W%V#$ C\TestExtend.java
C\TestExtend.java:6: cannot find symbol
symbol : class Extend
location: class com.gonni.profile.TestExtend
Extend exObj = new Extend();
^
C\TestExtend.java:6: cannot find symbol
symbol : class Extend
location: class com.gonni.profile.TestExtend
Extend exObj = new Extend();
^
2 errors
C:\A\B>javac -d . -cp . C\TestExtend.java
C:\A\B>
Extend.java是:
package com.gonni.profile;
class Extend {
class Inner {
}
}
TestExtend.java是:
package com.gonni.profile;
class TestExtend {
public static void main(String[] args) {
Extend exObj = new Extend();
}
}
不好意思地说,但是我不明白您想做什么:编译程序或使javac
失败?
C\\TestExtend.java
似乎错误。 您可能是指C:\\TestExtend.java
吗? 39#$%$fe#%#$%FF#$%GWE
? 您了解-cp
是什么意思吗? com.gonni.profile
包。 这意味着它们必须从源根开始位于目录com/gonni/profile
。 -d .
。 这是默认值。 -cp
(即CLASSPATH)。 该怎么办?
C:\\myproj
。 com.gonni.profile
,则应创建目录C:\\myproj\\com\\gonni\\profile
。 C:\\proj
javac com/gonni/profile/*.java
祝好运。
在这种情况下,您的源文件应位于目录C:\\ A \\ B \\ C \\ com \\ gonni \\ profile下-不直接位于C:\\ A \\ B \\ C中。 选项-cp指定查找其他编译类的路径-而不是源文件。
如果要指定源树的位置,请使用-sourcepath :
javac -sourcepath C C/com/gonni/profile/TestExtend.java
Javac要求列出必须在命令行中编译的所有文件。 您不能只列出一个,而是自动列出其他人。 结果,大型,现实世界的项目很难以这种方式构建。 另外,修复其他人已经指出的一些小错误。
因此,如果您想成为命令行大师,请学习Eclipse,NetBeans等用于基于IDE的开发,或者学习Maven,Ant,Make等。 仅在这些时间直接调用javac并不常见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.