java.io.OptionalDataException
run メソッドで受け取るのはなぜですか?
ObjectInputStream は項目とユーザーを数回読み取り、その後 でクラッシュしOptionalDataException
ます。関連していると思いますEOFException
。
新しいソケットが作成されたときにメッセージを出力します objectInputStream の値を出力します メッセージも出力します
スタック トレース + メッセージ
新しいソケットが作成されました
新しいソケットが作成されました 新しいソケットが作成さ
れました
これが ObjectInputStream です :java.io.ObjectInputStream@1430b5c これ
がメッセージです :REA:ITEM:
ここが ObjectInputStream です :java.io.ObjectInputStream@1decdec <
ここがメッセージです :ADD:ITEM:
New socket作成された
新しいソケットが作成されました
ObjectInputStream は次のとおりです:java.io.ObjectInputStream@b2fd8fメッセージ
は次の
とおりです:REA:ITEM:
新しいソケットが作成され
まし
たfedaih.SocketTask.run (
SocketTask.java:55) のreadObject (不明なソース)
java.lang.Thread.run(Unknown Source)で
新しいソケットが作成されました
ここに ObjectInputStream があります:java.io.ObjectInputStream@1c39a2d
ここにメッセージがあります:REA:USER:
ここに ObjectInputStream があります:java.io.ObjectInputStream@13bad12
ここにメッセージがあります:ADD :USER:
新しいソケットが作成されました
新しいソケットが作成されました
これが ObjectInputStream です :java.io.ObjectInputStream@eb7859 これ
がメッセージです :REA:USER:
java.io.OptionalDataException
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.
fedaih.SocketTask.run (SocketTask.java:55) のObjectInputStream.readObject (不明なソース)
java.lang.Thread.run で (不明なソース)
public void run() {
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
User user = null;
Item item = null;
String upc = null;
String username = null;
// This is the line where the error occurs
String message = (String) objectInputStream.readObject();
switch (message) {
case "REA:ITEM:": upc = (String) objectInputStream.readObject();
item = inventoryFileManager.readItem(upc);
objectOutputStream.writeObject(item);
objectOutputStream.flush();
break;
case "REA:USER:": username = (String) objectInputStream.readObject();
user = userFileManager.readUser(username);
objectOutputStream.writeObject(user);
objectOutputStream.flush();
break;
case "REM:ITEM:": upc = (String) objectInputStream.readObject();
inventoryFileManager.removeItem(upc);
break;
case "REM:USER:": username = (String) objectInputStream.readObject();
userFileManager.removeUser(username);
break;
case "ADD:ITEM:": item = (Item) objectInputStream.readObject();
if (item != null) {
inventoryFileManager.addItem(item);
}
break;
case "ADD:USER:": user = (User) objectInputStream.readObject();
if (user != null) {
userFileManager.addUser(user);
}
break;
case "UPD:ITEM:": item = (Item) objectInputStream.readObject();
inventoryFileManager.updateItem(item);
break;
case "UPD:USER:": user = (User) objectInputStream.readObject();
userFileManager.updateUser(user);
break;
case "ALL:ITEM:": objectOutputStream.writeObject(inventoryFileManager.readAllItems());
objectOutputStream.flush();
break;
case "ALL:USER:": objectOutputStream.writeObject(userFileManager.readAllUsers());
objectOutputStream.flush();
}
objectOutputStream.close();
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (PointOfSaleException e) {
e.printStackTrace();
}
}