将-cp开关与javac一起使用时,我无法理解某些行为。我在目录C:\ A \ B \ C>中有两个java文件。一台Windows 7机器。这些文件是Extend.java和TestExtend.java;两者都属于包'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();
}
}
答案 0 :(得分:1)
我很遗憾地说出来,但我不明白你想做什么:编译你的程序或让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
答案 1 :(得分:0)
在这种情况下,您的源文件应位于目录C:\ A \ B \ C \ com \ gonni \ profile下 - 不在C:\ A \ B \ C中。选项-cp指定查找其他编译类的路径 - 而不是源文件。
如果要指定源树的位置,请使用 -sourcepath :
javac -sourcepath C C/com/gonni/profile/TestExtend.java
答案 2 :(得分:0)
Javac要求列出必须在命令行中编译的所有文件。你不能只列出一个,除了它以自动发现其他人。因此,大型的现实世界项目很难以这种方式构建。另外,修复了其他人已经指出的一些小错误。
因此,如果您想成为命令行主机,请学习Eclipse,NetBeans等基于IDE的开发或学习Maven,Ant,Make等。在这些时候直接调用javac是不常见的。