我試過在很多地方搜索這個可能發生的原因,但我不能爲我的生活弄清楚它。有調用System.out.printf(...);當main被執行時,它們只是從終端丟失。另一個奇怪的是,它每次都不一樣。我可以連續運行應用程序兩次,無需更改代碼或重新構建,並且輸出缺少不同的System.out調用。Heroku本地應用程序測試在控制檯中缺少System.out
這是一個Maven Build。我有三個對象。包含main,一個User對象和一個DB訪問對象的類。
主要目標是使用連接來建立和發送電子郵件。 Db對象正在使用連接來訪問psql本地數據庫。
下面是一些顯示問題的代碼片段。
public static List<User_Search_Profile> getAllTable(String tableName, PrintStream out){
List<User_Search_Profile> users = new ArrayList<User_Search_Profile>();
Connection connection = Database_Access.establishConnection();
try{
ResultSet resultTable = Database_Access.generateResultSet("SELECT * FROM " + tableName, connection);
ResultSetMetaData resultTableMetaData = resultTable.getMetaData();
ResultSet abvTable = Database_Access.generateResultSet("SELECT * FROM CLSEARCHTABLE", connection);
connection.close();
int columns = resultTableMetaData.getColumnCount();
out.printf("Columns: " + columns + "%n");
String [] labels = new String[columns];
for(int i = 1; i <= columns; i++){
labels[i-1] = resultTableMetaData.getColumnLabel(i).toString();
out.printf("Label: " + labels[i-1] + "%n");
}
Map<String, String> dbVals = new HashMap<String, String>();
resultTable.first();
while(!resultTable.isAfterLast()){
for(String s: labels){
dbVals.put(s, resultTable.getString(s));
}
User_Search_Profile user = new User_Search_Profile(dbVals.get("region"), dbVals.get("category"),
dbVals.get("name"), dbVals.get("email"), dbVals.get("search"), dbVals.get("lasthash"));
users.add(user);
resultTable.next();
}
resultTable.close();
abvTable.first();
for(User_Search_Profile user: users){
while(!abvTable.isAfterLast()){
if(abvTable.getString(1) == user.getCategory()){
user.setCategoryAbv(abvTable.getString(2));
}
if(abvTable.getString(1) == user.getRegion()){
user.setRegionAbv(abvTable.getString(2));
}
abvTable.next();
}
user.printUser(out); //Calls the user object print
}
}
和用戶對象部分:
public void printUser(PrintStream out){
out.printf("--User--%n%n");
out.printf("Name: " + name + "%n");
out.printf("Email: " + email + "%n");
out.printf("Reg: " + region + "%n");
out.printf("Abv: " + regionAbv + "%n");
out.printf("Cat: " + category + "%n");
out.printf("Abv: " + categoryAbv + "%n");
out.printf("Search: " + searchString + "%n");
out.printf("Hash: " + lastHash + "%n");
//out.flush();
}
這裏是放出來連續運行:
james ~/heroku/java-getting-started $ heroku local worker
forego | starting worker.1 on port 5100
worker.1 | Columns: 6
worker.1 | Label: region
worker.1 | Label: category
worker.1 | Label: name
worker.1 | Label: email
worker.1 | Label: search
worker.1 | Label: lasthash
worker.1 | --User--
worker.1 |
worker.1 | Name: James
worker.1 | Email: ************
worker.1 | Reg: Clackamas County
worker.1 | Abv: null
worker.1 | Cat: Jobs
worker.1 | Abv: null
worker.1 | Search: Web Developer
worker.1 | Hash: ccdd352048003f7feae23004c5df2caa
james ~/heroku/java-getting-started $ heroku local worker
forego | starting worker.1 on port 5100
worker.1 | Columns: 6
worker.1 | Label: region
worker.1 | Label: category
worker.1 | Label: name
worker.1 | Label: email
worker.1 | Label: search
worker.1 | Label: lasthash
worker.1 | --User--
worker.1 |
worker.1 | Name: James
worker.1 | Email: **********
james ~/heroku/java-getting-started $ heroku local worker
forego | starting worker.1 on port 5100
worker.1 | Columns: 6
worker.1 | Label: region
worker.1 | Label: category
worker.1 | Label: name
worker.1 | Label: search
worker.1 | Label: lasthash
worker.1 | --User--
worker.1 |
worker.1 | Name: James
worker.1 | Email: *********** // not encrypted just personal
worker.1 |
worker.1 | Abv: null
worker.1 | Cat: Jobs
james ~/heroku/java-getting-started $
我超混淆。看起來有一個緩衝區問題,或輸出到別處,但如果我知道在哪裏,該死的。任何幫助將不勝感激,因爲調試幾乎不可能的地方,我不能驗證輸出。
謝謝。我不確定那是否是。在安裝工頭後,我得到一致的輸出! :)現在我可以解決'我'的問題。 – CaptnJunks