0

さまざまなファイル用のJavaパッケージを作成するにはどうすればよいですか?私は以下を試しました。私は何を間違えましたか?そして、正しい手順は何ですか?

最初のファイルは次のとおりです。

package dil;
public class Hello
{
    Support sp=new Support();
    int i=sp.tin();
    public void man()
    {
       System.out.println(i);
    }
}

2番目のファイルは次のとおりです。

package dil;
class Support
{
    public int tin()
    {
        return 3;
    }
}

hello.javaをコンパイルしている間、次のエラーが表示されます。

Hello:4:cannot find symbol
symbol: class Support
location: class dil.hello
Support sp=new Support();
               ^
Hello:4:cannot find symbol
symbol: class Support
location: class dil.hello
Support sp=new Support();
^

問題はどこにあり、これらのファイルを両方ともパッケージに入れるにはどうすればよいですか?

ファイルはc:\srcにあります。

4

6 に答える 6

1

Supportクラスは公開されていませんが、両方のクラスが同じパッケージを共有しているため、問題にはなりません。私の推測では、両方のソースファイルをパッケージ名に従ってディレクトリに配置せず、hello.javaが存在する現在のディレクトリからjavacコンパイラを呼び出したと思います。

クラスがパッケージabにある場合、これはプロジェクト構造にyourclass.javaを含むフォルダー./a/bが含まれている必要があることを意味します。

あなたの場合、。/ dilという名前のフォルダを作成し、その中にソースファイルを置き、その親フォルダからjavacを呼び出してみてください。

于 2009-10-09T11:35:22.880 に答える
1

Java でパッケージを使用する詳細については、Sun の Java チュートリアルの「パッケージの作成と使用」を参照してください。

于 2009-10-09T13:06:53.413 に答える
1

UNIX / Linux パス名、UNIX シェルなどを想定すると、次のファイル構造が必要になります。

/some/where/dil
/some/where/dil/hello.java
/some/where/dil/Support.java

次に、に設定$CLASSPATH/some/where、コマンドを使用してコンパイルします

cd /some/where
javac dil/*.java

を使用して実行します

java dil.hello

または、コマンド ライン オプションを使用してjavajavacどのクラスパスを使用するかを指定できます。-cp

コード内の次のエラーも修正する必要があります。

  1. 「hello」クラスの名前を「Hello」に変更し、ソース ファイルの名前を一致するように変更します。厳密に言えば、これはエラーではありませんが、Java クラスの命名規則に対する重大な違反です。
  2. メンバーを「ten」と宣言しますが、それを「tin」と呼びます。どちらかを修正してください。
  3. 「hello」クラスのエントリ ポイント メソッドは、「man」ではなく「main」と呼ばれ、署名が必要public static void main(String[] arg)です。これらを修正しないと、コードはコンパイルされますが、javaコマンドはエントリ ポイントを見つけられず、失敗します。
于 2009-10-09T13:08:05.097 に答える
0

私はあなたがチェックしなければならないいくつかのことを見つけました:

  • クラスhelloは小文字で始まります
  • クラスhelloは、sp.tin()ではなくsp.ten ()を呼び出します
于 2009-10-09T11:30:08.620 に答える
0

Supportではありませんpublic。公開して、もう一度お試しください。

于 2009-10-25T10:39:53.320 に答える