私は経験豊富なプログラマーですが、Java (主に C#) を何年も使用しておらず、過去に IDE を使用していました。Mac のコマンド ラインからコードをコンパイルしようとしていますが、テスト ファイルでソース コードを見つけることができません。問題はパッケージ、ファイル構造、クラスパス、およびインポートステートメントのどこかにあると想定していますが、スタックオーバーフローでのハンティングを含めて数時間費やしましたが、まだ行き詰まっています。
ここに私が持っているものがあります:
Directory structure:
ProjectName
|
--src
|
--SourceClass
--test
|
--SourceClassTest
--external
|
--testng-6.8.7.jar
私の SourceClass は次のようになります。
package ProjectName;
public class SourceClass<T>{
}
とてもシンプルです。明らかに、さらに多くの機能が追加される予定ですが、実際にコーディングを行う前に、このセットアップがすべて正しいことを確認することから始めたいと思いました。
私のテストクラスは次のようになります。
package ProjectName;
import java.util.*;
import org.testng.Assert;
import org.testng.annotations.*;
public class SourceClassTest{
@Test
private void createEmptySourceClass(){
SourceClass<Object> sourceClass = new SourceClass<Object>();
Assert.assertTrue(sourceClass.isEmtpy());
}
}
sourceClass は、「ProjectName」ディレクトリから実行される「javac src/*.java」で問題なくコンパイルされます。「SourceClassにisEmpty()メソッドがありません」という行に沿ったエラーでこれが失敗することを確認したいのですが、代わりに「ProjectName」ディレクトリから次のようにjavacを実行します。
javac test/*.java -classpath external/testng-6.8.7.jar
そして、この例外を取得します:
test/SourceClassTest.java:12: error: cannot find symbol
SourceClass<Object> tree = new SourceClass<Object>();
^
symbol: class SourceClass
location: class SourceClassTest
test/SourceClassTest.java:12: error: cannot find symbol
SourceClass<Object> sourceClass = new SourceClass<Object>();
^
symbol: class SourceClass
location: class SourceClassTest
2 errors
私は多くのことを試しました - import ステートメントを追加し、javac コマンドに sourcepath を追加し、sourceClass を jar としてコンパイルし、それを bin ディレクトリに入れ、それをクラスパスに追加しましたが、テストを取得できませんSourceClass シンボルを検索します。
ここで何が欠けているのか分かりますか?