0

javac で -cp スイッチを使用しているときに、特定の動作を理解できません。Windows 7 マシンのディレクトリ C:\A\B\C> に 2 つの 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. option を指定する必要はありません-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では、コマンドラインでコンパイルする必要のあるすべてのファイルを一覧表示する必要があります。1つだけをリストすることはできず、他の人を自動検出するためにそれを除いてはできません。その結果、大規模な現実世界のプロジェクトをそのように構築することは非常に困難です。また、他の人がすでに指摘しているいくつかの小さなエラーを修正します。

したがって、IDEベースの開発のためにEclipse、NetBeansなどを学ぶか、コマンドラインマスターになりたい場合は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 に答える