Я создаю новый процесс, используя java ProcessBuider
, и я хочу, чтобы объект был отправлен родителю от создаваемого потомка.Здесь я сериализую объект с дочерней стороны и отправляю его родителю.Но когда я читаю отправленный объект от родителя, возникает исключение, говорящее
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
Чувствовалось, что все еще нет потоков, получаемых от родителя, когда я пытаюсь прочитать это. Parent, Child
и объект Отправкаjava-файлы подробно описаны ниже.
DTO.java
public class DTO implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
public DTO(String name)
{
this.name = name;
}
public String getName() {
return name;
}
@Override
public int hashCode() {}
@Override
public boolean equals(Object obj) {}
Parent.java
public class Parent {
public static void main(String[] args) {
try {
new Parent().start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void start() throws IOException, InterruptedException, ClassNotFoundException
{
String classpath = System.getProperty("java.class.path");
String className = Child.class.getCanonicalName();
ProcessBuilder builder = new ProcessBuilder(
"java", "-cp", classpath, className);
builder.inheritIO();
Process process = builder.start();
if (process.isAlive()) {
ObjectInputStream input = new ObjectInputStream(process.getInputStream());
DTO dto = (DTO)input.readObject();
System.out.println();
}
}
}
Child.java
public class Child {
public static void main(String[] args) throws IOException {
DTO dto = new DTO("text");
ObjectOutputStream stream = new ObjectOutputStream(System.out);
stream.writeObject(dto);
stream.flush();
stream.close();
}
}
Что такоенеправильно что я здесь делаю?Любые предложения, чтобы исправить это