0

ブラックボックステストを行うことになっている2つの.classファイルがあります。これらはパッケージに含まれていますone.two.three。私のテストも同じパッケージに含まれています。同じパッケージに3番目の.classファイルがあり、その目的は、Ordersテストすることになっているクラスの列挙型変数を保持することです。OrdersEclipseでは、列挙型を直接インポートすることで、junitテストを機能させることができます。

import one.two.three.Orders.ShippingMethod;

Antを使用して、またはコマンドラインからこれを実行しようとすると、「パッケージone.two.three.Ordersが存在しません」というエラーが表示されます。importステートメントをに変更した場合

import one.two.three.*;

Ant、Eclipse、およびターミナルは、私が持っているクラスを見つけることができません。Antでテストケースをコンパイルして実行する必要があります。クラスはありますbin/one/two/threeどんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

1

をインポートします。これはクラスであり、それがそのクラス内の列挙型であるOrdersと仮定すると、その型を参照する正しい方法はです。ShippingMethodOrders.ShippingMethod

クラスの内部型をインポートしようとすると、Eclipseで奇妙に機能することがあります。これは、Eclipseがjavacjdkにパッケージ化されたコンパイラを使用していないことが原因である可能性がありますが、Antは使用しています(Antは組み込みコンパイラを出荷していないため、使用する必要があります)。

 import one.two.three.Orders;


 public class Whatever {

    private Orders.ShippingMethod shipMethod;

 }

これは正しい方法であるため、すべてで機能するはずです。

 import one.two.three.Orders.ShippingMethod;

がないため、ほとんどのコンパイラを簡単に混乱させる可能性があります

 one/two/three/Orders/ShippingMethod.class

ファイル。これは、クラスローダーが実行時にファイルを検出しないことを意味します。

かなりの数を見てきましたが、これはEclipse組み込みコンパイラのバグだと思います。明るい面として、Eclipse組み込みコンパイラーは、コード編集とEclipseの間のより高速で緊密な統合を提供するために存在します。暗い面では、それはEclipseコンパイラーとjavacコンパイラーが異なる場合があることを意味します。疑わしい場合は、javacコンパイラはおそらく正しいです。

于 2013-03-12T21:40:14.083 に答える
0

クラスパスを設定する必要があります。

Eclipse(NetBeansを使用)について正確にはわかりませんが、をクリックしLibraries -> add JAR/Folderます。

コマンドラインの場合、クラスパスを指定する必要があります

java -cp path/to/my/files (...)

于 2013-03-12T21:38:28.980 に答える