2017-08-13 3 views
1

私は眠っている間にデータ収集のためにこのJavaプログラムを繰り返し実行する必要があるbashファイルを持っています。ここでbashファイルからマルチクラスのJavaプログラムを実行しますか?

はbashのファイルです:

#!/bin/bash 

javac Main.java 

START=`date +%s` 
while [ $(($(date +%s) - 28800)) -lt $START ]; do 
    java Main 
done 

私はbashのファイルを実行すると:私のMain.javaファイルと同じディレクトリから./cache_script.shを、これらのエラーが発生します。

Main.java:16: error: cannot find symbol 
     Entry[] entries = new Entry[DATA_SET_SIZE]; 
     ^
    symbol: class Entry 
    location: class Main 
Main.java:16: error: cannot find symbol 
     Entry[] entries = new Entry[DATA_SET_SIZE]; 
          ^
    symbol: class Entry 
    location: class Main 
Main.java:20: error: cannot find symbol 
      entries[i] = new Entry(999999999, 999999999, 99999999.9); 
          ^
    symbol: class Entry 
    location: class Main 
Main.java:25: error: cannot find symbol 
      LruCache<Integer, Entry> lruCache = new LruCache<>(CAPACITY); 
      ^
    symbol: class LruCache 
    location: class Main 
Main.java:25: error: cannot find symbol 
      LruCache<Integer, Entry> lruCache = new LruCache<>(CAPACITY); 
          ^
    symbol: class Entry 
    location: class Main 
Main.java:25: error: cannot find symbol 
      LruCache<Integer, Entry> lruCache = new LruCache<>(CAPACITY); 
                ^
    symbol: class LruCache 
    location: class Main 
6 errors 

をそれがどのように見えますbashインタプリタは、Main.javaが使用するEntry.javaファイルとLruCache.javaファイルを見つけられません。

どうすればこの問題を解決できますか?

答えて

2

クラスパスを追加指定する必要があります。これを行うには、 "java Main"コールに "-cp%FOLDER_WITH_CLASS_FILES%"属性を追加する必要があります。

一般的に "java"コールは、LruCache、Entryおよびその他のクラスを探す場所については何も知りません。 classpath属性はそのような手がかりを与えます。

あなたはjavaコマンドを実行している間、その後javacとでコンパイルしながら、あなたのクラスパスにすべて使用されるクラス/ * jarファイルを追加する必要があり、ここでクラスパス属性についてはこちらをhttp://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

1

をより多くを読むことができます。

こちらをご覧ください:how to compile java package structures using javacがどのように様々なオプションがあなたのプロジェクト構造

+0

に応じて、私はまだ混乱していますことを行うために、私はこれらの変更を行ったが、それはまだ動作しません: 'javacのEntry.java -cp /ユーザーは、/tomfinet/IdeaProjects/CacheExperiment/src/com/ee/ javac LruCache.java -cp/Users/tomfinet/IdeaProjects/CacheExperiment/src/com/ee/ javac Main.java -cp/Users/tomfinet/IdeaProjects/CacheExperiment/src/com/ee/'' java Main'の代わりに 'java Main -cp/Users/tomfinet/IdeaProjects/CacheExperiment/src/com/ee /'があります。 –

関連する問題