1

別のプロジェクトのクラスにアクセスするためのjarファイルを作成したJavaクラスを取得しました。

クラスは次のようになります

public class RunMain {

    private ArgumentObject argObject = null;
    private String outputFile = null;
    private SimObject simObject = null;

    public RunMain() {
    }

    public RunMain(String file) {
        outputFile = file;
    }

    public static void main(String[] args) throws Exception {
        new RunMain().doMain(args);
    }

    public void testMethod(){

    }

    public void blaMethod(){

    }

    public SimObject getResults(){
        return simObject;
    }

    public void doMain(String[] args) throws Exception {

        // do some stuff

    }  

    // write term and doc vectors to bin files
    void writeVectorStore() throws Exception{

        // do some stuff
    } 
}

私の問題は、別のプロジェクトのメソッドにアクセスしたい場合、mainメソッドまたはdoMainメソッドしか呼び出せないことです。

RunMain run = new RunMain();
run.doMain(arguments);

これは問題なく動作します

SimObject simObject = run.getResults();

これは、「メソッドgetResults()はタイプRunMainに対して未定義です」と赤でマークされています。

なぜこれが起こっているのか誰かが知っていますか?

4

2 に答える 2

1

私には2つのアイデアがあります:

  1. jarファイルには、コンパイルされたクラスの以前のバージョンが含まれています。
  2. 以前のバージョンのjarファイルを使用します。

ただし、クラスの一部のパブリックメソッドのみがjarファイルにアクセスできるようにすることはできません。

于 2013-01-24T18:28:05.853 に答える
0

確認すべき点がいくつかあります...

  1. このjarファイルを使用するプロジェクトのクラスパスに独自のバージョンのクラスRunMainがないことを確認してください。jarファイルのRunMainを「オーバーライド」します。クラスのローカルバージョンがあり、メソッドgetResults()がない場合は、コンパイラエラーが発生します。
  2. .jarファイルでしばらく作業している場合は、ファイルを再構築して、そこにあるコードが最新バージョンであることを確認することをお勧めします。jarを作成してからメソッドを追加したが、jarファイルを再作成しなかった可能性があります。次に、新しいjarファイルがプロジェクトによって参照されていることを確認します。
于 2013-01-24T18:27:56.713 に答える