2017-08-13 23 views
1

我有一個bash文件,它應該在我睡覺時反覆運行這個java程序以進行數據收集。從bash文件運行多級java程序?

這裏是bash的文件:

#!/bin/bash 

javac Main.java 

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

當我執行的是bash文件:./cache_script.sh從同一目錄作爲我的Main.java文件,發生這些錯誤:

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

你需要指定你的類路徑。要做到這一點,你需要添加「-cp%FOLDER_WITH_CLASS_FILES%」屬性到你的「java main」調用

一般來說,「java」調用一無所知應該在哪裏尋找LruCache,Entry和所有其他類。 classpath屬性給出了這樣的線索。

你可以在這裏閱讀更多關於classpath屬性這裏http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

1

您應該添加所有使用的類/ *罐子到類路徑,而與javac編譯,然後用java命令運行時。

在這裏看到: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 /' –