0

将 -cp 开关与 javac 一起使用时,我无法理解某些行为。我在 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();
    }
}
4

3 回答 3

1

我很抱歉这么说,但我不明白你想做什么:编译你的程序还是让它javac失败?

  1. 路径C\TestExtend.java似乎错误。你大概的意思是C:\TestExtend.java
  2. 是什么39#$%$fe#%#$%FF#$%GWE?你明白是什么-cp意思吗?
  3. 您的课程属于 package com.gonni.profile。这意味着它们必须com/gonni/profile位于从源根目录开始的目录下。
  4. 您不必提供选项-d .。这是默认设置。
  5. 据我了解,您有几个(2 个?)类没有任何外部依赖项。这意味着您根本不必使用-cp(即 CLASSPATH)。

该怎么办?

  1. 创建项目所在的目录。比方说C:\myproj
  2. 为了简化开始的事情,根据您的包创建目录结构。例如,如果您的包是com.gonni.profile您应该创建目录C:\myproj\com\gonni\profile
  3. 把你的班级放在那里。
  4. 打开推荐提示并转到C:\proj
  5. 现在运行命令javac com/gonni/profile/*.java

祝你好运。

于 2013-01-15T07:59:21.733 回答
0

Javac 需要列出它必须在命令行中编译的所有文件。你不能只列出一个,除了它来自动发现其他人。因此,大型的现实世界项目很难以这种方式构建。另外,修复一些其他人已经指出的小错误。

因此,如果您想成为命令行大师,请学习 Eclipse、NetBeans 等进行基于 IDE 的开发,或者学习 Maven、Ant、Make 等。在这些时候直接调用 javac 是不常见的。

于 2013-01-15T08:08:44.023 回答
0

在这种情况下,您的源文件应位于 C:\A\B\C\com\gonni\profile 目录下 - 而不是 C:\A\B\C 目录下。选项 -cp 指定查找其他编译类的路径- 而不是源文件。

如果要指定源树的位置,请改用-sourcepath :

    javac -sourcepath C C/com/gonni/profile/TestExtend.java
于 2013-01-15T08:00:12.280 回答