1

そこで、util というフォルダを作成し、その中に unit10Assignment という名前のプログラムと一緒に 4 つのクラスを配置しました。パッケージ util を作成し、次のように各クラス コードの先頭に「 package util; 」と入力しました。

package util;

public class Employee

それから私は書いた:

import util.*;
import javax.swing.JOptionPane;

public class unit10Assignment

プログラムの上。しかし、私がそれをコンパイルすると、それは教えてくれます。理由を知っている人はいますか?私はそれをいじってみましたが、 import java.util*; と入力すると消えました。代わりに、私の先生が彼女の例として望んでいたものが前にJavaを持っていなかったかどうかはわかりません。

また、「不正なソース ファイル」「パッケージに従業員クラスが含まれていません」とも表示されますが、パッケージ ステートメントを入力する前にすべてが完全にコンパイルおよび実行され、それ以来、コードに変更を加えていません。従業員クラスからパッケージステートメントを削除すると、同じメッセージが表示されますが、別のクラスが存在しないと表示されます。

助けてくれてありがとう 注: java.util を配置するか、単に util を配置するかに関係なく、この問題はソースが正しくないためにまだ表示されます。

助けてくれてありがとう

4

2 に答える 2

3

プロジェクトが次のように設定されていると仮定します。

util/
    Employee.java
    unit10Assignment.java
bin/

(そうでない場合は、それで問題ありません-それらが何らかのフォルダー にある限り。bin/ただし、存在する必要があります。)

パッケージが機能する方法は、それらがハード ドライブ上のフォルダーであることです。インポートするパッケージでは、インポートするフォルダーとクラスの両方がその特定のフォルダーに存在する必要があります。これが、パッケージが便利な理由です。2 つのクラスに名前Employeeを付けて、それらをまったく異なる場所に置くことができます。*

IDE を使用せずにこれらをパッケージのような構造にコンパイルする方法を次に示します。Java クラス フォルダーのフル パスを $HOME に置き換えます。

javac -sourcepath $HOME/util -d $HOME/bin *.java

メインクラスを実行する方法は次のとおりです。

java -cp $HOME/bin util.$MAIN_CLASS

これらのフラグの意味の内訳:

  • -sourcepathこの特定のディレクトリでソース ファイルを探すように javac に指示します。
  • -d.class ファイルの出力ディレクトリを指定します。
  • -cpこのフォルダーをそのクラスパスに追加するように Java に指示します。

*: 本当に、本当に大きなプロジェクトでは、他のクラスと同じ名前を使用することがよくあります。特定のものを使用したい場合は、完全修飾クラス名を使用する必要があります。

于 2012-08-24T23:39:26.910 に答える
0

次のことを確認してください。

  • ファイル名はクラス名と一致します (例: Employee.javaclass Employee)
  • ファイルは、パッケージに応じて対応するフォルダー内にあります(つまりutil

IDE を使用していますか? そうでない場合は、これを使用すると、この種の作業に非常に役立ちます。

于 2012-08-24T23:09:20.780 に答える